我正在使用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<> >
  • 请参阅http://www.boost.org/doc/libs/1_56_0/libs/multi_index/doc/tutorial/basics.html#seq_indices
  • 关于c++ - 如何通过索引访问boost::multi_index::multi_index_container <>的所有元素?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/27104068/

    10-17 01:39