2014-04-27 66 views
0

我需要一個全局變量在我的C++程序中。它將成爲一個位集的向量。但是,位集的大小是由函數在運行時確定的。C++:在定義之前註冊全局變量

所以基本上,我想註冊變量(在我的代碼的頂部),然後通過決定bitarrays大小的函數來正確定義它。

有沒有辦法在C++中做到這一點?

回答

1

一種方法是使用dynamic_bitset從boost:

#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> >對位集的向量。它專門用於每個元素只使用一位。

+0

的確,我認爲我必須使用動態大小的解決方案,因爲我也從函數返回位集,所以我需要知道函數定義的大小。謝謝,我會嘗試建議的替代方案。 – user1850980

0

bitsets的大小在編譯時是固定的。只是使用static vector<vector<bool>> MyGlobalBits;