У меня есть boost::multi_index_container
с индексом hashed_unique
и sequenced
. Как я могу получить второй из последнего элемента из этого контейнера?Как получить второй из последнего элемента из multi_index_container
struct MyContainer : public mi::multi_index_container<
MyStruct,
mi::indexed_by<
mi::hashed_unique<
mi::tag<hashed>,
%some stuff%,
%some stuff%,
%some stuff%>
>,
mi::sequenced<mi::tag<sequenced> >
>
>
{ };
Поскольку контейнер хэширован, я могу найти любой элемент по его хешу. Но в моем случае я не знаю хэш второго-последнего элемента. Однако я знаю хэш последнего элемента и, следовательно, могу получить последний элемент.
MyContainer::iterator myIter = m_table.find(hashOfLast);
Могу ли я использовать эту myIter
, чтобы получить итератор к предыдущему элементу?
Редактировать:
Могу ли я сделать что-то вроде этого?
MyContainer::nth_index<1>::type& seqIdx = m_table.get<1>();
auto current = seqIdx.rbegin();
auto last = seqIdx.rend();
if(current != last){
current++;
//How to get the hash of this element now?
}
Вы имеете в виду второе и последнее а) в соответствии с элементами заказа, которые появляются в хэшированном индексе или b) в соответствии с порядком в индексе последовательности? –
Согласно последовательностям индекс –