我想在C ++中实现一个算法,它需要一个动态分配的大型bitset向量(512x18,000,000位 - 我有16Gb的RAM)。
a)这很好用
int nofBits=....(function read from db);
vector < bitset <nofBits> > flags;
flags.resize(512);
但是如何将它(通过引用)传递给函数?请记住,我在编译时不知道nofBits。
我可以使用
vector<vector<bool> >
但是在内存使用方面会不会更糟?
答案 0 :(得分:3)
我最近遇到了同样的问题,但是就像std :: array一样,你需要在编译时知道bitset的大小,因为它是一个模板参数。我发现boost::dynamic_bitset是另一种选择,它就像一个魅力。
答案 1 :(得分:2)
std::vector<bool>
专门用于有效地使用内存。它大致与std::bitset<N>
一样节省空间(一些额外的字节,因为它的大小是动态的,并且位在堆上)。
但请注意,std::vector<bool>
有issues,所以请小心翼翼。