我不敢承认,我现在已经有一段时间没用过C ++了,但我现在恐怕不得不这样做了,而且我有点生疏了。
我需要一个位图,我关心性能,我的位图大小将不再是25位。
我正在考虑使用unsigned int,但我恐怕不记得它是如何在c / c ++中实现的
unsigned int是作为常规二进制数实现的吗?
我也对位图的任何其他建议持开放态度。
提前感谢您的帮助!
答案 0 :(得分:4)
使用标题std::bitset<25>
中的<bitset>
。 bitset
可以使用[]
建立索引并且是一个模板,因此它可能会扩展为只有unsigned int
(或等效的)所有内联操作。
答案 1 :(得分:4)
您是否考虑过<bitset>
头文件中的std::bitset?
示例:
#include <iostream>
#include <bitset>
int main() {
std::bitset<25> bits(146);
std::cout << bits << std::endl;
//using operator[] to access individual bit manually!
for(size_t i = 0 ; i < bits.size() ; ++i)
std::cout << bits[i] << " ";
return 0;
}
输出:
0000000000000000010010010
0 1 0 0 1 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
注意: bits[0]
是最不重要的位,而bits[bits.size()-1]
是最重要的位!
答案 2 :(得分:0)
考虑使用bitset。
答案 3 :(得分:0)
你应该能够为位图使用整数类型,假设它有足够的位。
但是,标准库中有<bitset>
。