位集的c++向量传递给函数
c++ vector of bitset pass to a function
我想在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>
存在问题,因此请谨慎行事。
相关文章:
- 函数向量_指针有不同的原型,我可以构建一个吗
- 如何使用向量的template_back函数
- 如何通过派生类函数更改基类中的向量
- 变量没有改变?通过向量的函数调用
- 一对向量构造函数:初始值设定项列表与显式构造
- 在c++中使用向量时,如何调用构造函数和析构函数
- std::sort()函数无法对向量的一部分进行排序
- 如何在C++向量中奇数元素前面加上值-1,我在使用insert函数时遇到了问题
- C++中函数的向量返回类型引发错误
- 添加存储在向量中的大整数的函数出现问题
- 如何在 c++ 中定义接受不同参数类型的函数向量?
- 具有 lambda 函数的函数向量
- 你能用参数制作函数向量吗?
- 在C++中使用成员函数向量时,有没有办法实现协变返回类型
- 在编写 lambda 函数向量时出现隔离错误
- 如何在 boost.process 间共享内存中使用复杂结构"push_back"函数向量
- 是否将std矢量重新分配到默认的构造函数向量是擦除的好方法
- 运行提升for_each中的成员函数向量
- 创建和回推函数向量
- C++,指向函数向量的指针的STL映射