ホームページ >バックエンド開発 >C++ >C で逆反復子を使用してリストから要素を消去するにはどうすればよいですか?

C で逆反復子を使用してリストから要素を消去するにはどうすればよいですか?

DDD
DDDオリジナル
2024-11-20 01:55:01646ブラウズ

How Can I Use Reverse Iterators to Erase Elements from a List in C  ?

逆反復子を使用した要素の消去

反復子の領域では、消去関数は反復子を必要とするため、逆反復子を使用する場合は束縛に陥ります。この課題を克服し、逆反復子を使用してリストから要素を削除するにはどうすればよいでしょうか?

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 サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。