2011-04-10 118 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 2011-04-10 20:06:24

+0

哦,如果你的意思是你想遍歷所有具有某個鍵的值,那麼你應該使用'lower_bound()'而不是'find()','upper_bound()'而不是'end()'。或者你可以調用'equal_range()'在一次調用中獲得兩個邊界。它的工作原理與通常的STL一樣:http://www.sgi.com/tech/stl/equal_range.html – 2011-04-10 20:10:42

+0

就是這樣!謝謝 :) – Ockonal 2011-04-10 20:17:17