我的C ++程序中需要一个全局变量。它将是一个位集矢量。但是,位集的大小在运行时由函数确定。
所以基本上,我想注册变量(在我的代码的顶部),然后通过确定位数大小的函数正确定义它。
有没有办法在C ++中执行此操作?
答案 0 :(得分:1)
一种方法是使用boost中的dynamic_bitset
:
#include <iostream>
#include <vector>
#include <boost/dynamic_bitset.hpp>
std::vector< boost::dynamic_bitset<> > bitsets;
int main() {
bitsets.push_back(boost::dynamic_bitset<>(1024));
bitsets.push_back(boost::dynamic_bitset<>(2048));
std::cout << bitsets[0].size() << std::endl;
std::cout << bitsets[1].size() << std::endl;
}
您也可以使用vector<bool>
代替vector< vector<bool> >
作为位集矢量。它专门用于每个元素仅使用一位。
答案 1 :(得分:0)
位集大小在编译时是固定的。只需使用static vector<vector<bool>> MyGlobalBits;