反復子の領域では、消去関数は反復子を必要とするため、逆反復子を使用する場合は束縛に陥ります。この課題を克服し、逆反復子を使用してリストから要素を削除するにはどうすればよいでしょうか?
C 標準によれば、逆反復子のベース i.base() は、指定された要素の前の要素に対応します。逆反復子、すなわち &*(reverse_iterator(i)) == &*(i - 1).
したがって、逆反復子を使用して要素を削除するには、基本反復子。これは、次の解決策を使用して実現できます:
m_CursorStack.erase(--(i.base()));
または、C 11 には 2 つの追加オプションがあります:
1。変更されていない逆反復子:
m_CursorStack.erase(std::next(i).base());
2.高度な逆反復子:
std::advance(i, 1); m_CursorStack.erase(i.base());
要件に最も適したソリューションを選択して、逆反復子の利便性を活用しながらリストから要素を簡単に削除できるようにします。
以上がC で逆反復子を使用してリストから要素を消去するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。