2014-04-27 2 views
0

내 C++ 프로그램에 전역 변수가 필요합니다. 그것은 비트 세트의 벡터가 될 것입니다. 그러나 비트 집합의 크기는 런타임에 함수에 의해 결정됩니다.C++ : 정의하기 전 전역 변수 등록

기본적으로 변수를 (내 코드의 맨 위 부분에) 등록하고 나중에 비트 배열의 크기를 결정하는 함수로 올바르게 정의하고 싶습니다.

C++에서이를 수행 할 수있는 방법이 있습니까?

답변

1

한 가지 방법은 부스트에서 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; 
} 

당신은 또한 bitsets의 벡터 대신 vector<bool>, 즉 vector< vector<bool> > 사용할 수 있습니다. 이것은 요소 당 하나의 비트만을 사용하는 데 특화되어 있습니다.

+0

사실, 나는 또한 함수에서 비트 세트를 반환하기 때문에 동적 인 솔루션을 사용해야한다고 생각합니다. 따라서 함수 정의의 크기도 알아야합니다. 고마워, 나는 대안을 제안 할게. – user1850980

0

비트 세트 크기는 컴파일시 고정되어 있습니다. 그냥 사용하십시오 static vector<vector<bool>> MyGlobalBits;