关于C#:何时使用STL位集代替单独的变量?

关于C#:何时使用STL位集代替单独的变量?

When to use STL bitsets instead of separate variables?

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

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


好吧,作为布尔集的50个布尔将占用7个字节,而作为布尔的50个布尔将占用50个字节。如今,这并不是什么大不了的事情,因此使用布尔值可能没问题。

但是,如果您需要大量传递这些布尔值,尤其是如果您需要从函数返回该布尔值的话,一个位集可能会有用。使用位集,您需要在堆栈上移动的数据较少,以返回数据。再说一次,您可以只使用refs来传递更少的数据。 :)


n


这取决于您所说的"性能提升"。如果您只需要其中的50个,并且您的内存并不低,那么单独的布尔值通常总是比bitsets更好的选择。它们将占用更多的内存,但是速度会更快。通常将位集实现为一个整数数组(布尔值打包成这些整数)。因此,您的位集中的前32个布尔(位)将仅占用一个32位int,但是要读取每个值,您必须先进行一些按位运算以掩盖所有不需要的值。例如。要读取位集的第二位,您需要:

  • 查找包含所需位的int(在这种情况下,它是第一个int)
  • 按位,并且该int为'2'(即value


    n


  • 推荐阅读

      python如何看变量属性

      python如何看变量属性,培训,属性,函数,变量,参数,对象,方法,列表,范围内,字

      怎么查看python变量值

      怎么查看python变量值,信息,培训,类型,函数,字符串,变量,使用方法,数据类

      python变量怎么使用

      python变量怎么使用,培训,信息,数字,变量,字母,空格,开头,关键字,意义,规则

      python声明变量

      python声明变量,培训,代码,变量,赋值,字符串,类型,语句,函数,上面,声明,首先

      python声明变量类型

      python声明变量类型,培训,代码,基础,变量,赋值,类型,字符串,语句,函数,上面

      python变量赋值是什么

      python变量赋值是什么,培训,变量,名称,数字,标准,类型,赋值,声名,字符串,数

      python怎么声明变量

      python怎么声明变量,培训,通用,一致,数字,变量,声明,字符串,引号,方式,类型

      python变量怎么写

      python变量怎么写,培训,数字,变量,字母,示例,空格,开头,关键字,意义,规则,变

      python需要声明类型吗

      python需要声明类型吗,数据,培训,中心,类型,声明,语言,变量,内存空间,内存

      python布尔类型是什么

      python布尔类型是什么,培训,代码,类型,代表,布尔,整数,算式,事情,称之为,对

      python如何声明函数

      python如何声明函数,培训,函数,较大,合法,代码,画线,工具,定义,单词,参数,py

      python布尔值是什么

      python布尔值是什么,培训,代码,代表,整数,算式,事情,类型,称之为,错误,程序