gpt4 book ai didi

c++ - 我可以在位掩码中包含多少个选项?

转载 作者:太空宇宙 更新时间:2023-11-04 16:21:16 25 4
gpt4 key购买 nike

this question有人指出:

Using int [for bit mask] is asking for trouble

我一直在使用 unsigned char 来存储位掩码标志,但我突然想到我会达到低限,因为 char 只是一个字节,因此是 8 位,因此只有 8 个选项我的面具?

enum options{
k1=1<<0,
k2=1<<1,
.... through to k8
}

unsigned char myOption=k2;

如果我希望它存储超过 8 个可能的选项(以及选项的组合,当然,因此我为什么首先使用位掩码)?最好的类型是什么?

最佳答案

如果您需要未知数量的“位”,您可以使用类似 std::vector<bool> 的东西类,看这里:

http://www.cplusplus.com/reference/vector/vector-bool/

这是 vector 类的特例,它可以使用位来打包 bool 值,因此它比 bool 的数组更节省空间。 s(是否需要额外的效率取决于您)。

当然我不知道你的应用程序是什么,使用位域有很多正当理由。但是,如果您只是存储一堆 true 和 false 值,则像 bool 数组或 bool vector 之类的东西可能更容易维护(当然它有缺点,您无法测试查看是否像使用掩码和位域那样在一次操作中设置了 3 位,因此它是特定于应用程序的)。

vector<bool>我认为虽然有些争议。请参阅:http://howardhinnant.github.io/onvectorbool.html

关于c++ - 我可以在位掩码中包含多少个选项?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16556082/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com