* 원문 메뉴얼 :
http://www.boost.org/libs/dynamic_bitset/dynamic_bitset.html
http://www.boost.org/libs/dynamic_bitset/dynamic_bitset.html
std::bitset을 조금 개량한 것입니다. std::bitset은 템플릿 매개변수로 비트 길이를 받지만, boost::dynamic_bitset은 생성자 매개변수로 비트길이를 받는다는 점이 다릅니다. 즉, dynamic_bitset쪽은 프로그램 실행중 입력값에 따라 비트 길이를 설정할 수 있다는 점에서 더 융통성이 있습니다. (물론 고정 비트 버퍼를 쓴다면 상관없겠지만요)
- 필요할 경우가 많지는 않겠지만, std::bitset으로 해결이 어려울 경우 필요할 수도...
- std::bitset이든 boost::dynamic_bitset에서든 문자열형태로 뽑아내려면 iostream 계열을 사용하여야합니다. (즉, 고전적인 printf()로는 안됩니다)
- bitset예제입니다. (sgi 메뉴얼에서 퍼온것입니다)
#include <iostream>
#include <bitset>
using namespace std;
int main() {
const bitset<12> mask(2730ul);
cout << "mask = " << mask << endl;
bitset<12> x;
cout << "Enter a 12-bit bitset in binary: " << flush;
if (cin >> x) {
cout << "x = " << x << endl;
cout << "As ulong: " << x.to_ulong() << endl;
cout << "And with mask: " << (x & mask) << endl;
cout << "Or with mask: " << (x | mask) << endl;
}
}
동일하게 실행되지만 dynamic_bitset을 사용한 경우입니다.
#include <iostream>
#include <boost/dynamic_bitset.hpp>
using namespace std;
using namespace boost;
int main() {
const dynamic_bitset<> mask(12, 2730ul); // <-- 이 부분이 다릅니다!
cout << "mask = " << mask << endl;
dynamic_bitset<> x(12); // <-- 생성자 매개변수를 지정한 것이 다릅니다.
cout << "Enter a 12-bit bitset in binary: " << flush;
if (cin >> x) {
cout << "x = " << x << endl;
cout << "As ulong: " << x.to_ulong() << endl;
cout << "And with mask: " << (x & mask) << endl;
cout << "Or with mask: " << (x | mask) << endl;
}
}
선언부를 제외하고 동일하다는 점을 알 수 있습니다.









