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

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

有帮助吗?

解决方案

使用 std::bitset<25> 从标题 <bitset>. bitset 可以用索引 [] 并且是一个模板,因此它可能扩展为一个 unsigned int (或等效的)所有操作都内联。

其他提示

你有没有考虑过 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

考虑一个 bitset

您应该能够为位映射使用整数类型,假设它有足够的位。 但是,标准库中存在一个生成的<bitset>

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top