Хранение улучшенного итератора индекса multi_index - PullRequest
0 голосов
/ 18 декабря 2018

У меня есть класс boost :: multi_index, который имеет несколько индексов.

Если я хочу сохранить обычный итератор, я могу сделать

multi_index_table :: const_iterator x_itr == my_table.find (x);

но если я попытаюсь

multi_index_table :: const_iterator x_itr == my_table.get_index (y) .find (x), он жалуется, что это не тот же тип итератора.

Я довольно новичок в C ++ и пришел из Java-среды, в идеале я хотел бы иметь какую-то форму суперкласса, которая может хранить любой тип итератора, если это возможно.

Любое руководство будетвысоко ценится!

РЕДАКТИРОВАТЬ: Я в основном хочу сделать что-то в таком виде:

my_table.get_index(a).find(x);
x.erase<a>(x):

my_table.get_index(b).find(y);
    x.erase<b>(y):   

template<uint64_t Index>
template<typename Iterator>  
Iterator erase(Iterator itr){
  my_table.get_index<Index>().erase(itr)
}

1 Ответ

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

С c ++ 11 довольно просто.Просто используйте:

auto x_itr = my_table.get_index(y).find(x)

Компилятор определит тип x_itr.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...