1

次のコードのように、コンテナから要素を削除する単一のアルゴリズムはありますか?

vec_it = std::remove_if( vec.begin(), vec.end(), pred );
vec.erase( vec_it, vec.end() );
4

3 に答える 3

6

それを行う慣用的な方法は、ジャルフが言ったようなものです。独自の関数を作成して、それをより簡単に行うことができます。

template<typename T, typename Pred> void erase_if(T &vec, Pred pred)
{
    vec.erase(std::remove_if(vec.begin(), vec.end(), pred), vec.end());
}

だからあなたが使うことができます

std::vector<int> myVec;
// (...) fill the vector. (...)
erase_if(myVec, myPred);
于 2008-11-28T16:30:17.497 に答える
5

こんな感じですか?

vec.erase( std::remove_if( vec.begin(), vec.end(), pred ), vec.end() );

それが慣用的な方法です。

于 2008-11-28T16:17:02.377 に答える
-2

知らない。あるかもしれません。しかし、もしあるとすれば、それはとんでもない声明になるでしょう。誰もそれを理解したり維持したりすることはできません。これらの 2 つの行で目的が達成される場合は、そのまま使用してください。彼らは完全に良いです。

于 2008-11-28T16:16:50.690 に答える