boost intrusive 直接从节点获取下一个
boost intrusive get next directly from node
是否可以直接从 node/element 获取下一个 node/element?像这样:
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);
}
是否可以直接从 node/element 获取下一个 node/element?像这样:
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);
}