2016-10-18 9 views
2

다음과 같이 내가 부스트 :: multi_index이있는 경우,boost :: multi_index는 멤버 함수와 어떻게 작동합니까?

typedef multi_index_container< 
    employee, 
    indexed_by<  
     hashed_unique<mem_fun<employee, std::string, &employee::getname> >, 
     hashed_unique<mem_fun<employee, int, &employee::getage> > 
    > 
> employee_set; 

은 본인은이 O에서 검색 할 수있는 방법에 저장되어있는이 컨테이너에 삽입 된 클래스 "직원"의 대상 (1) 시간 (해시 맵).

멤버 변수 (이름, 나이)가 프로그램 과정에서 업데이트 될 때 (예 : setname 또는 setage와 같은 것으로) 여전히 저장되며 그 값을 사용하여 해시가 유지됩니까? 내가 뭔가 잘못 이해하고 있니?

TIA documentation 가입일

-R

+0

http://www.boost.org/doc/libs/1_61_0/libs/multi_index/doc/tutorial/basics.html에서 "replace"및 "modify"를 참조하십시오. –

답변

1

는 : 모든 인덱스에 의해 제공

반복자, 즉 그들이 직접 돌연변이 수를 가리키는 요소 일정하다. 이것은 순서화 된 인덱스의 경우 std::set의 인터페이스를 따르지만 std::list 이후에 모델링 된 시퀀스 된 인덱스와 같은 다른 유형의 경우에는 놀랄 수 있습니다.이 제한은 발생하지 않습니다. 이 겉으로보기에는 이상한 행동은 방법으로 부과됩니다 multi_index_container의 작품; 요소가 무차별 적으로 변형 될 수 있다면 컨테이너가 알리지 않고 multi_index_container의 정렬 된 색인에 불일치가 생길 수 있습니다. 요소 수정은 모든 색인에서 update operations을 사용하여 올바르게 수행됩니다. 당신이 전화에 끼어에 - 더 - 플라이 해시를 조정할 수 있습니다 지적되는 컨테이너의 업데이트 기능을 사용하지 않는 즉

, 당신은 단지 저장된 객체에 const 액세스 할 수 있습니다.