位集的c++向量传递给函数

c++ vector of bitset pass to a function

本文关键字:函数 向量 c++      更新时间:2023-10-16

我想在C++中实现一种算法,它需要一个动态分配的巨大比特集向量(512x18000000比特-我有16Gb的RAM)。

a) 这很好

int nofBits=....(function read from db);
vector < bitset <nofBits> > flags;
flags.resize(512);

但是我如何将它(通过引用)传递给函数呢?请记住,我在编译时不知道nofBits。

我可以用

vector<vector<bool> > 

但就内存使用而言,情况会不会更糟?

我最近也遇到了同样的问题,但就像std::数组一样,您需要在编译时知道位集的大小,因为它是一个模板参数。我找到了boost::dynamic_bitset作为一种替代方案,它就像一种魅力。

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

但是,请注意,std::vector<bool>存在问题,因此请谨慎行事。