1

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

unsigned int 是作为常规二进制数实现的吗?
我也愿意接受任何其他关于位图的建议。
在此先感谢您的帮助!

4

4 回答 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 回答