我有一個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?
}
你的意思是倒數第二個a)根據順序元素出現在散列索引還是b)根據順序索引中的順序? –
根據序列索引 –