MSa*_*ers 5 c++ boost typedef multi-index
如果您有boost::multi_index_container< >
多个索引,显然有多种方法可以迭代它 - 每个索引定义一种方式.例如,如果您有一个带标记的索引T
,则可以迭代container.get<T>().begin()
到container.get<T>().end()
.
如果您尝试在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>
键入这些成员呢?这将允许你写multi_index_container<...>::index<T>::iterator
.
同样,为什么multi_index_container< >::index_iterator<T>
不是迭代器?multi_index_container< >::index_iterator<T>::type
是的,但Boost为什么选择嵌入式typedef?同样,::type
似乎只添加混乱.
就我个人而言,我认为这只是一个疏忽。特别是对于像boost::multi_index_container<T>
. 我经常发现我编写的代码本身并不是错误,但回想起来我觉得我可以做得更好。
归档时间: |
|
查看次数: |
1052 次 |
最近记录: |