повысить навязчиво получить следующий непосредственно от узла - PullRequest
0 голосов
/ 17 декабря 2018

Возможно ли получить следующий узел / элемент непосредственно из узла / элемента?Вот так:

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

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

1 Ответ

0 голосов
/ 17 декабря 2018

У многих интрузивных контейнеров есть статическая функция-член 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);
}

Live Demo

...