C ++:定义前注册全局变量

时间:2014-04-27 10:00:45

标签: c++ global-variables undefined local bitset

我的C ++程序中需要一个全局变量。它将是一个位集矢量。但是,位集的大小在运行时由函数确定。

所以基本上,我想注册变量(在我的代码的顶部),然后通过确定位数大小的函数正确定义它。

有没有办法在C ++中执行此操作?

2 个答案:

答案 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;