객체를 삽입 할 부스트 multi_index를 만들었습니다. 다음과 같이 내 multi_index 보이는부스트에서 삽입 후 찾을 수 없습니다. multi_index
,
typedef boost::multi_index_container<
Container*,
boost::multi_index::indexed_by<
boost::multi_index::hashed_unique<
boost::multi_index::tag<IndexByUniqueId>,
boost::multi_index::const_mem_fun<StoreMe, Id, &StoreMe::getUId>
>,
boost::multi_index::hashed_non_unique<
boost::multi_index::tag<IndexByNonUId>,
boost::multi_index::const_mem_fun<StoreMe, std::string, &Container::getNUIdString>
>
>
> mi_Container;
나는 비 고유 ID 객체와 고유 ID가 처음 객체에 존재하지 않는 삽입
. 나중에 프로그램 과정에서 업데이트되고 "getNUIdString"및 "getUId"는 0/비어 있지 않은 값을 반환합니다.비 고유 ID를 사용하여 조회하려고 할 때 저장된 값을 가져올 수 없습니다. 그것이 삽입 될 때 그들이 채워질 것으로 예상됩니까? 또는 그들이 필요할 때 업데이트되고 그 순간에도 여전히 가치를 찾을 수 있다면 괜찮습니까?
EDIT1 :
내가 "교체"또는 인덱스를 변경하는 동안 "수정"을 사용하여 인덱스를 업데이트 할 필요가 있음을 이해합니다. 그래서 처음에는 빈 문자열을 삽입 기호를 한 색인의 키로, 다른 색인을 0으로 삽입하는 동안 특정 값을 사용하여 조회 할 때 아무것도 반환하지 않습니까? ""빈 문자열 ""을 사용하여 검색하면됩니다. 그것은 나에게 모든 값을 반환해야합니다 (따라서 조회 시간 O (n)이됩니까)?
편집 2 : 모든 값을 ""빈 문자열에 매핑하려고했습니다. 나는 여전히 결과가 없습니다. 이터레이터 쌍 중 첫 번째는 end()와 같습니다.
키의 값을 으로 변경하려는 경우 해당 개체에 대한 설정자에서 값을 설정할 때 non_unique 키 값 쌍 중 하나만 쌍으로 변경하려면 어떻게해야합니까? 나는 객체에 대한 setter를 통해 값을 설정할 때마다 그것을하고 싶을 것이므로, 내가 가지고있는 multi_index를 사용하여 그것을 찾을 수있다. 작은 맥락으로
TIA는
-R
Thanks @Joaquin!귀하의 질문에 대한 답변은 다음과 같습니다 – codeworks
* 색인은 std :: string을 반환합니다 * 예 * 예, 디버거로 검사했습니다. 컨테이너에 27xxx 객체가 있습니다. * 그렇게 생각합니다. be * 예, 대체 키 또는 유사한 키를 사용하여 요소의 키를 변경하지 않았습니다. 아니요, equal_range ("")는 첫 번째가 containers.end()와 같은 쌍을 반환합니다. – codeworks
필요한 경우 알려주십시오. 자세한 정보는 귀하를 위해 제공 할 수 있습니다. 다시 한 번 감사드립니다 – codeworks