bitset的c ++向量传递给函数

时间:2013-07-13 10:12:52

标签: c++ vector bitset

我想在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> > 

但是在内存使用方面会不会更糟?

2 个答案:

答案 0 :(得分:3)

我最近遇到了同样的问题,但是就像std :: array一样,你需要在编译时知道bitset的大小,因为它是一个模板参数。我发现boost::dynamic_bitset是另一种选择,它就像一个魅力。

答案 1 :(得分:2)

std::vector<bool>专门用于有效地使用内存。它大致与std::bitset<N>一样节省空间(一些额外的字节,因为它的大小是动态的,并且位在堆上)。

但请注意,std::vector<bool>issues,所以请小心翼翼。