0

是否可以直接从节点/元素获取下一个节点/元素?像这样:

struct Data{
   boost::intrusive::list_member_hook<> node;

   Data* get_next(){
       node.get_next() ???
   }
}
4

1 回答 1

1

许多 boost 侵入式容器都有一个静态成员函数s_iterator_to,可以直接从值中获取迭代器。

因此,您可以获得一个迭代器,然后使用迭代器接口:

struct Data{
   boost::intrusive::list_member_hook<> node;

   inline Data* get_next();
}

namespace bis = boost::intrusive;

using List = bis::list<Data,
        bis::member_hook<Data, bis::list_member_hook<>, &Data::node>
      >;

Data* Data::get_next() {
    return &*++List::s_iterator_to(*this);
}

现场演示

于 2018-12-17T13:54:38.397 回答