c++;传递给函数的位集向量 我想在C++中实现一个算法,它需要一个动态分配的比特集的巨大向量(512x1800比特-我有16GB的RAM)。p>

c++;传递给函数的位集向量 我想在C++中实现一个算法,它需要一个动态分配的比特集的巨大向量(512x1800比特-我有16GB的RAM)。p>,c++,vector,bitset,C++,Vector,Bitset,a) 这个很好用 int nofBits=....(function read from db); vector < bitset <nofBits> > flags; flags.resize(512); int nofBits=..(从数据库读取的函数); 向量标志; 标志。调整大小(512); 但是如何(通过引用)将其传递给函数呢?请记住,我不知道编译时的nofBits 我需要一个 vector<vector<bool> > 向量

a) 这个很好用

int nofBits=....(function read from db);
vector < bitset <nofBits> > flags;
flags.resize(512);
int nofBits=..(从数据库读取的函数);
向量<位集>标志;
标志。调整大小(512);
但是如何(通过引用)将其传递给函数呢?请记住,我不知道编译时的nofBits

我需要一个

vector<vector<bool> > 
向量

但就内存使用而言,这不是更糟糕吗?

我最近也遇到了同样的问题,但是就像std::array一样,您需要在编译时知道位集的大小,因为它是一个模板参数。我找到了另一种方法,它非常有效。

我最近也遇到了同样的问题,但是就像std::array一样,您需要在编译时知道位集的大小,因为它是一个模板参数。我找到了一个替代方案,它的效果非常好。

std::vector专门用于高效使用内存。它的空间效率大致相当于
std::bitset
(因为它的大小是动态的,并且位位于堆上,所以需要额外几个字节)

但是,请注意,
std::vector
有,所以请轻描淡写。

std::vector
专门用于高效使用内存。它的空间效率大致相当于
std::bitset
(因为它的大小是动态的,并且位位于堆上,所以需要额外几个字节)


然而,请注意,
std::vector
有,所以请轻描淡写。

不知道编译时的nofBits
那么您到底应该如何将它传递给模板?如果您知道另一种方法,请推荐一种。无需苛刻
编译时不知道nofBits
那么您到底应该如何将其传递给模板?如果您知道其他方法,请推荐一种。不必太苛刻,只要问清楚就行了。对我来说,它不是助力就是矢量。对吧?是的,据我所知。我想vector的优点是它不需要外部库,而boost::dynamc_位集允许您使用位运算符,如|、&、^等。我还没有测试过它们的内存使用情况,但我认为它们大致相同。感谢您的计算。谢谢汉克斯,我只是想确定一下。对我来说,它不是助力就是矢量。对吧?是的,据我所知。我想vector的优点是它不需要外部库,而boost::dynamc_位集允许您使用位运算符,如|、&、^等。我还没有测试过它们的内存使用情况,但我认为它们大致相同。感谢您的计算。我很感激