当前位置:  开发笔记 > 编程语言 > 正文

何时使用STL位集而不是单独的变量?

如何解决《何时使用STL位集而不是单独的变量?》经验,为你挑选了2个好方法。

在什么情况下,使用bitset(STL容器)来管理一组标志而不是将它们声明为多个单独的(bool)变量更合适?

如果我使用50位标志的bitset而不是使用50个单独的bool变量,我会获得显着的性能提升吗?



1> Herms..:

好吧,作为bitset的50个bool将占用7个字节,而作为bool的50个bool将占用50个字节.这些日子并不是什么大不了的事情,所以使用bool可能就好了.

但是,一个bitset可能有用的地方是你需要经常传递那些bool,特别是如果你需要从函数返回set.使用bitset,您需要在堆栈上移动返回的数据更少.然后,你可以改为使用refs,并传递更少的数据.:)



2> Johannes Sch..:

当你需要序列化/反序列化时,std :: bitset会给你额外的积分.您可以将其写入流或使用它从流中读取.但当然,单独的bools会更快.毕竟,它们针对这种用途进行了优化,而bitset则针对空间进行了优化,并且仍然涉及到函数调用.它永远不会比单独的bool更快.

位集合

非常节省空间

比特摆弄效率低下

使用op<<和提供序列化/反序列化op>>

所有比特都打包在一起:你将在一个地方拥有旗帜.

单独的bools

非常快

Bools没有包装在一起.他们将成为某个地方的成员.

决定事实.我个人会使用std::bitset一些不具有性能的关键,并且如果我只有少量bool(因此它具有相当的概览性),或者如果我需要额外的性能,则会使用bool.


我添加了使用按位或运算符来组合标志集作为bitset的巨大胜利的能力.
推荐阅读
LEEstarmmmmm
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有