値による STL ベクトルからの要素の削除
STL ベクトルを扱う場合、値による要素の削除は基本的なことのように見えるかもしれません。操作は可能ですが、ベクトル クラス自体には単純なメソッドがないようです。
std::remove 関数は、この一般的なタスクの解決策を提供します。ただし、std::remove はコンテナーから要素を直接削除しないことに注意することが重要です。代わりに、指定された条件を満たす要素をコンテナの先頭に再配置します。削除プロセスを完了するには、この変更されたコンテナをcontainer_type::eraseに渡して、最後にある冗長な要素を削除する必要があります。
次の例を考えてみましょう。
std::vector<int> vec; // .. populate vec .. int int_to_remove = n; vec.erase(std::remove(vec.begin(), vec.end(), int_to_remove), vec.end());
この例ではたとえば、 std::remove は、 int_to_remove に等しくないすべての要素をベクトルの先頭に再配置し、その後の最初の要素を指す反復子を返します。これらの要素。この反復子は std::erase() の引数として使用され、ベクトルの末尾にある残りの要素を効果的に削除します。
以上がSTL ベクトルから値によって要素を効率的に削除するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。