2011-04-10 2 views
0

여기 내 multi_index 코드 :multi_index

struct tag_type {}; 
typedef boost::multi_index_container<ObjectStorage, 
      bmi::indexed_by< 
       // Type 
       bmi::ordered_non_unique< 
        bmi::tag<tag_type>, 
        bmi::const_mem_fun<ObjectStorage, std::string, &ObjectStorage::getType> 
       > 
      > 
     > ObjectWrapperSet; 

가 지금은 find의 결과를 반복하고 싶습니다.

ObjectWrapperSet::index<tag_type>::type &mObjectsByTypeViewer = 
    mObjectsSet.get<tag_type>() 

typedef ObjectWrapperSet::index<tag_type>::type::const_iterator ByTypeIt; 
ByTypeIt it = mObjectsByTypeViewer.find("Some type"); 

하지만 다른/최종 반복기를 얻는 방법은 무엇입니까?

답변

1

시도해 보셨습니까?

ByTypeIt end = mObjectsByTypeViewer.end(); 
+0

그러나 모든 'mObjectsByTypeViewer'가 아니라 검색 (호출 찾기)에 대한 종료 반복자가 필요합니다. 컨테이너에있는 모든 객체의 끝이 될 것입니다. 맞습니까? – Ockonal

+0

아, 키를 가지고있는 모든 값을 반복하고 싶다면'find()'대신'lower_bound()'를 사용하고'end()'대신'upper_bound()'를 사용해야합니다. 또는 'equal_range()'를 호출하여 단일 호출에서 두 경계를 가져올 수 있습니다. 그것은 일반적인 STL과 동일하게 작동합니다 : http://www.sgi.com/tech/stl/equal_range.html –

+0

그게 전부입니다! 감사 :) – Ockonal