2017-03-23 22 views
-3

私はベクトルを持っています。ユーザーからの入力に応じてさまざまなものを削除したいと思います。たとえば、ベクトルが{1 10 12 2 3 10 5 6 29}であり、10より大きいすべてを削除することに興味がある場合、remove_if関数の述語を作成するにはどうすればよいですか?そして、どのようにしてこの述語をユーザーの入力を表すようにしますか?初めてコードを実行すると、10を超えるすべてのものを削除する必要があるかもしれませんが、2回目は8より大きいすべてを削除する必要があり、削除する必要があるのは、プログラムの実行後に与えられるユーザー入力に依存します。このようremove_ifの述語

答えて

-1

#include <algorithm> 
#include <vector> 

void remove_greater(std::vector<int> & v, int n) 
{ 
    v.erase(
     std::remove_if(v.begin(), v.end(), [n](int x) { return x > n; }), 
     v.end()); 
} 

使用法:

std::vector<int> v = {1, 10, 12, 2, 3, 10, 5, 6, 29}; 
remove_greater(v, 10); 
+0

[デモ](https://ideone.com/0AKtL7) –

+0

Downvoter、ケアがあなたの異議を説明するには? –