一个很长的布尔数组/ std :: bitset

时间:2013-07-13 11:59:51

标签: c++ boolean

对于某些C ++代码,我的逻辑需要一个包含4 * 10 ^ 10个索引的布尔数组。我正在使用STL容器std::bitset。但它的实现为template < size_t N > class bitset;将位数限制为size_t(无符号整数类型)数据类型的上限,即2 ^ 32-1(或2 ^ 64-1){< strong>也可以确认一下}。

我想通过创建array of bitset来解决此问题的方法,如bitset<100000000> checkSum[400];

这合法吗?我收到以下编译错误(test.cpp是我的C ++文件)

/tmp/cc0gR0c6.o: In function `__static_initialization_and_destruction_0(int, int)':
test.cpp:(.text+0x35f): relocation truncated to fit: R_X86_64_32 against `.bss'
test.cpp:(.text+0x373): relocation truncated to fit: R_X86_64_32 against `.bss'
collect2: ld returned 1 exit status

这可以以某种方式修复或有更好的解决方法吗?

2 个答案:

答案 0 :(得分:1)

我认为你应该使用vector而不是数组,就像:

vector<bitset<1000000> > checkSum;

答案 1 :(得分:0)

size_t是32位还是64位,具体取决于您是编译32位还是64位代码。看起来您可以简单地编译64位目标并解决此问题。