가 나는 set
dynamic_bitset
의 개체를 사용하려고 해요,하지만 난 런타임에 어설 션 오류를 받고 있어요 :boost :: dynamic_bitsets를 어떻게 사용합니까?
#include <iostream>
#include <set>
#include <boost/dynamic_bitset.hpp>
int main() {
typedef boost::dynamic_bitset<> bitset;
std::set<bitset> myset;
bitset x(2, 0);
bitset y(3, 1);
myset.insert(x);
myset.insert(y);
return 0;
}
내가 왜 궁금 해요 : 여기
a.out: boost/dynamic_bitset/dynamic_bitset.hpp:1291:
bool boost::operator<(const boost::dynamic_bitset<Block, Allocator>&,
const boost::dynamic_bitset<Block, Allocator>&)
[with Block = long unsigned int,
Allocator = std::allocator<long unsigned int>]:
Assertion `a.size() == b.size()' failed.
하면 코드 삽입 된 dynamic_bitset
개체와 동일한 크기가 필요합니다. operator<
이 작동하려면 짧은 비트 셋의 최상위 비트가 암시 적으로 0으로 채워져 있다고 가정 할 수 없습니까?
dynamic_bitset
이 작동하려면 어떤 방법이 있습니까? , 그것은 operator<
을 필요로하지 않기 때문에
나는 또한 unordered_set
을 시도했지만 dynamic_bitset
이 hash_value
이 없기 때문에 그것은 컴파일 할 수 없습니다와 나는 그것의 to_ulong
멤버 함수를 사용하지 않고 그것을 작성하는 방법을 잘 모르겠어요 짧은 비트셋에서만 작동합니다.
for (size_type ii = a.num_blocks(); ii > 0; --ii)
첫 번째 피연산자 블록 카운트가 bitsets 통해 반복 사용된다