我正在使用boost::multi_index::multi_index_container<>
以下是我的容器声明:
typedef boost::multi_index::multi_index_container<
myClssPtr,
boost::multi_index::indexed_by<
OrderdBValue // OrderdBValue this is boost::multi_index::ordered_unique type
>
>
我想顺序访问此容器的所有元素,该怎么做?
最佳答案
当然,问题是什么顺序。但让我假设最直接的解释是:
typedef boost::multi_index::multi_index_container<
myClssPtr,
boost::multi_index::indexed_by<
OrderdBValue // OrderdBValue this is boost::multi_index::ordered_unique type
>
> container;
for(myClassPtr& e : container.get<0>())
{
// e.g.:
std::cout << e << "\n";
}
实际上,看到您只有一个索引,这也是默认的(第一个)索引,因此您甚至可以说
for(myClassPtr& e : container)
{
// e.g.:
std::cout << e << "\n";
}
UPDATE 对于c++ 03,语法有点笨拙:
typedef employee_set::nth_index<0>::type idx_type;
for(idx_type::iterator it=container.get<0>().begin(); it != container.get<0>().end(); ++it)
{
// e.g.
std::cout << *it << "\n";
}
现在,如果您/ meant / _insertion订单,则您需要明确添加例如
indexed_by<sequenced<> >
或indexed_by<random_access<> >
关于c++ - 如何通过索引访问boost::multi_index::multi_index_container <>的所有元素?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/27104068/