【发布时间】:2018-12-17 13:11:57
【问题描述】:
是否可以直接从节点/元素获取下一个节点/元素?像这样:
struct Data{
boost::intrusive::list_member_hook<> node;
Data* get_next(){
node.get_next() ???
}
}
【问题讨论】:
标签: c++ boost boost-intrusive
是否可以直接从节点/元素获取下一个节点/元素?像这样:
struct Data{
boost::intrusive::list_member_hook<> node;
Data* get_next(){
node.get_next() ???
}
}
【问题讨论】:
标签: c++ boost boost-intrusive
许多 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);
}
【讨论】:
get_next() 应该返回 null_ptr。