내 C++ 프로그램에 전역 변수가 필요합니다. 그것은 비트 세트의 벡터가 될 것입니다. 그러나 비트 집합의 크기는 런타임에 함수에 의해 결정됩니다.C++ : 정의하기 전 전역 변수 등록
기본적으로 변수를 (내 코드의 맨 위 부분에) 등록하고 나중에 비트 배열의 크기를 결정하는 함수로 올바르게 정의하고 싶습니다.
C++에서이를 수행 할 수있는 방법이 있습니까?
내 C++ 프로그램에 전역 변수가 필요합니다. 그것은 비트 세트의 벡터가 될 것입니다. 그러나 비트 집합의 크기는 런타임에 함수에 의해 결정됩니다.C++ : 정의하기 전 전역 변수 등록
기본적으로 변수를 (내 코드의 맨 위 부분에) 등록하고 나중에 비트 배열의 크기를 결정하는 함수로 올바르게 정의하고 싶습니다.
C++에서이를 수행 할 수있는 방법이 있습니까?
한 가지 방법은 부스트에서 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> >
사용할 수 있습니다. 이것은 요소 당 하나의 비트만을 사용하는 데 특화되어 있습니다.
비트 세트 크기는 컴파일시 고정되어 있습니다. 그냥 사용하십시오 static vector<vector<bool>> MyGlobalBits;
사실, 나는 또한 함수에서 비트 세트를 반환하기 때문에 동적 인 솔루션을 사용해야한다고 생각합니다. 따라서 함수 정의의 크기도 알아야합니다. 고마워, 나는 대안을 제안 할게. – user1850980