我不敢承认,我已经有一段时间没有使用 C++ 了,但恐怕我现在必须使用 C++,而且我有点生疏了。
我需要一个位图,而且我确实关心性能,我的位图大小将不再是 25 位。
我在考虑使用unsigned int,但我怕我不记得它是如何在c/c++中实现的。
unsigned int 是作为常规二进制数实现的吗?
我也愿意接受任何其他关于位图的建议。
在此先感谢您的帮助!
问问题
2672 次
4 回答
5
使用std::bitset<25>
来自标头的<bitset>
。bitset
可以被索引[]
并且是一个模板,所以它可能会扩展为一个unsigned int
(或等效的)所有操作都内联的。
于 2011-03-26T10:40:13.477 回答
4
您是否考虑过头文件中的std::bitset<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]
而是最高有效位!
在线演示:http: //ideone.com/3sSF0
于 2011-03-26T10:41:26.373 回答
0
考虑一个位集。
于 2011-03-26T10:40:53.360 回答
0
您应该能够将整数类型用于位图,假设它有足够的位供您使用。
但是,<bitset>
标准库中有一个。
于 2011-03-26T10:41:44.263 回答