コンテナーから値の範囲を消去する関数を実装することになっています。そう
eraseRange(v, 1.5, 24);
たとえば、コンテナ v から 1.5 より大きく 24 より小さい値を削除します。そして、私の関数はリストに対して完全に機能します。
container.erase(remove_if(container.begin(), container.end(), rg));
rg は範囲内にあるかどうかをチェックします (その部分の実装は問題ではないので、詳しくは説明しません)。
ただし、ベクトルに対して eraseRange を呼び出し、同様のメソッドを使用して値を消去すると、最初の値のみが消去されます。したがって、1 から 10 までの数字を持つベクトルを使用する場合、次のように呼び出します。
eraseRange(v, 3, 7);
削除されるのは 3 つだけです。
通常、これは問題になりません。イテレータを使用して値を確認するだけです。この特定の演習を除いて、for/while/do ループは明示的に禁止されています...
したがって、問題はランダム アクセス イテレータを持つコンテナーにあるようです。そして、代替手段として何を実装すればよいかわかりません。ヘルプ?