c ++中的位图 - unsigned int能完成这项工作吗?

时间:2011-03-26 10:39:02

标签: c++ c bitmap unsigned-integer

我不敢承认,我现在已经有一段时间没用过C ++了,但我现在恐怕不得不这样做了,而且我有点生疏了。 我需要一个位图,我关心性能,我的位图大小将不再是25位。 我正在考虑使用unsigned int,但我恐怕不记得它是如何在c / c ++中实现的

unsigned int是作为常规二进制数实现的吗?
我也对位图的任何其他建议持开放态度。
提前感谢您的帮助!

4 个答案:

答案 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]是最重要的位!

在线演示:http://ideone.com/3sSF0

答案 2 :(得分:0)

考虑使用bitset

答案 3 :(得分:0)

你应该能够为位图使用整数类型,假设它有足够的位。

但是,标准库中有<bitset>