私はユーザーが内部ベクトルから項目を削除するために呼び出すAPIを作成しています。彼らは削除する要素のベクトルを検索する基準を渡します。任意の要素を見つけて削除した場合、私のAPIにブール値を返すようにしたいと思います。erase-remove_ifイディオム - 何かが削除されましたか?
私はerase-remove idiomを使用して、物事をシンプルかつ効率的に保つことを計画しています。私はアイテムが実際に削除されたことを検出するためにすぐに明らかな方法を見ていないのですか?削除する前にベクトルの要素の数を格納し、その値を比較している、私の最高の賭け?ここで
がこのイディオムの一部(未テスト)のサンプルコードです:
std::vector<int> v = { 0, 1, 2, 3, 4, 5, 6, 7, 8, 9 };
boolean removeMultiples(int multiple) {
v.erase(std::remove_if(v.begin(), v.end(), [multiple](int i){return i%multiple == 0;}), v.end());
// return true if anything was removed
}
前後のサイズを比較しますか? –