とsequenced
によってインデックスされたboost::multi_index_container
があります。このコンテナから最後の要素の2番目を取得するにはどうすればよいですか?multi_index_containerから最後の2番目の要素を取得する方法
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> >
>
>
{ };
コンテナがハッシュされているので、ハッシュで任意の要素を見つけることができます。しかし、私の場合、2番目から最後の要素のハッシュはわかりません。しかし、私は最後の要素のハッシュを知っているので、最後の要素を得ることができます。
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)順序付き索引の順序に従って最後から2番目までを意味しますか? –
シーケンスインデックスによると –