对于某些 C++ 代码,我的逻辑需要一个包含 4*10^10 索引的布尔数组。我正在使用 STL 容器std::bitset
。但是它的实现template < size_t N > class bitset;
将位数限制为size_t
(无符号整数类型)数据类型的上限,即 2^32-1(或 2^64-1){有人也可以确认这一点}。
我想了一个解决这个问题的方法,方法是创建一个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
这可以以某种方式解决还是有更好的解决方法?