我需要一個全局變量在我的C++程序中。它將成爲一個位集的向量。但是,位集的大小是由函數在運行時確定的。C++:在定義之前註冊全局變量
所以基本上,我想註冊變量(在我的代碼的頂部),然後通過決定bitarrays大小的函數來正確定義它。
有沒有辦法在C++中做到這一點?
我需要一個全局變量在我的C++程序中。它將成爲一個位集的向量。但是,位集的大小是由函數在運行時確定的。C++:在定義之前註冊全局變量
所以基本上,我想註冊變量(在我的代碼的頂部),然後通過決定bitarrays大小的函數來正確定義它。
有沒有辦法在C++中做到這一點?
一種方法是使用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> >
對位集的向量。它專門用於每個元素只使用一位。
bitsets的大小在編譯時是固定的。只是使用static vector<vector<bool>> MyGlobalBits;
的確,我認爲我必須使用動態大小的解決方案,因爲我也從函數返回位集,所以我需要知道函數定義的大小。謝謝,我會嘗試建議的替代方案。 – user1850980