是否可以直接从节点/元素获取下一个节点/元素?像这样:
struct Data{
boost::intrusive::list_member_hook<> node;
Data* get_next(){
node.get_next() ???
}
}
是否可以直接从节点/元素获取下一个节点/元素?像这样:
struct Data{
boost::intrusive::list_member_hook<> node;
Data* get_next(){
node.get_next() ???
}
}
许多 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);
}