リストから消去するための逆反復子の変換
消去操作を使用してリストから要素を削除するには、通常の反復子が必要です。ただし、逆反復子を使用する場合は、変換が必要です。
標準では、逆反復子 (i) とそれに対応する通常の反復子 (i.base()) の間の関係が定義されています:
& *reverse_iterator(i) == &*(i - 1)
この関係により、逆反復子を通常の反復子に変換できます。 i.base() にオフセットを適用することによる反復子。したがって、逆反復子を使用して要素を消去するには、次のコードを使用できます。
m_CursorStack.erase(--(i.base()));
C 11 以降では、逆反復子を使用して要素を消去するために 2 つの追加オプションが使用できます。
1.変更されていない逆反復子
m_CursorStack.erase(std::next(i).base());
2. Advanced Reverse Iterator
std::advance(i, 1); m_CursorStack.erase(i.base());
これらの代替案は、最初のアプローチと比較して、より明確で簡潔なソリューションを提供します。
以上がC で逆反復子を使用してリストから要素を消去する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。