如果你有一個帶有多個索引的boost::multi_index_container< >
,顯然有多種迭代方法 - 每個索引定義一種方法。例如,如果您的索引標記爲T
,則可以從container.get<T>().begin()
重複爲container.get<T>().end()
。boost :: multi_index_container :: index <Tag> :: type是什麼意思?
如果您嘗試在for循環(並且沒有C++ 0x auto
)中這樣做,迭代器的類型爲multi_index_container<...>::index<T>::type::iterator
。現在index<T>::type
將是boost :: multi_index :: detail :: ordered_index或結構上等價的東西。例如。它將提供iterator
typedef和一個begin()
方法。
現在我的問題是,既然multi_index_container< >::index<T>
似乎只存在於的typedef index<T>::type
,並index<T>::type
已有名的成員,爲什麼不index<T>
typedef的成員?這將允許你寫multi_index_container<...>::index<T>::iterator
。
同樣,爲什麼multi_index_container< >::index_iterator<T>
不是迭代器? multi_index_container< >::index_iterator<T>::type
是,但爲什麼Boost選擇嵌入式typedef? ::type
似乎只增加了混亂。
我不得不在我們的代碼中查找這個,因爲我不知道:: type。看起來我們已經對它們進行了typedef,這樣它們就不會在實現中出現。所以沒有我的答案:我從來沒有遇到過問題,所以我從來不理解爲什麼...... – stefaanv 2010-09-01 10:49:40