composite_key 인 인덱스가있는 multi_index_container가 있습니다. 그러나 키로 요소를 지울 수있는 방법을 찾을 수 없습니다. 아래를 참조하십시오 :composite_key가있는 multi_index_container에서 키 당 요소 지우기
#include <boost/multi_index_container.hpp>
#include <boost/multi_index/member.hpp>
#include <boost/multi_index/hashed_index.hpp>
#include <boost/multi_index/composite_key.hpp>
using namespace boost::multi_index;
struct Point
{
int x, y;
};
void func()
{
multi_index_container<Point,indexed_by<
hashed_unique<
composite_key<Point,
member<Point,int,&Point::x>,
member<Point,int,&Point::y> >
> > > points;
points.find(boost::make_tuple(3, 3)); // <- works
points.erase(boost::make_tuple(3, 3)); // <- failes to compile
}
삭제 (키) 복합없는 인덱스 작동합니다. 하지만 복합 키에 대한 올바른 구문을 찾을 수 없습니다.
는
좋아 확장되지 않습니다,하지만이 서명 '을 위해 무엇인지 궁금 해서요이다 size_type 지우기 (key_param_type x)'. 전처리 된 코드에서 찾았습니다. composite_key로 호출 할 방법이 없습니까? –
또 하나 : erase (iterator, iterator)는 반복자를 반환합니다. 해시 인덱스로 오랜 시간이 걸릴 수 있습니까? 나는 여전히 어떻게 든 가능하다면 지우기 (키)를 호출하는 것을 선호 할 것이다. –
지우기가 호환 가능한 키를 처리하기 위해 확장되지 않는 이유는 '템플릿을 지우는 (it)'코드를 호출 할 때 '템플릿 iterator erase (const CK & ck)'가 기존의 iterator erase (iterator) '반복자가 아닌'반복자'로 변환 가능한 객체를 가지고 있습니다. 조금 병적 인, 나는 인정한다. –