質問があります。C++ で 1 次元配列から複数の要素を削除するにはどうすればよいですか? 配列 A={1,3,5,8,9,7} があり、配列 A から 3,5,7 を削除したいとします。効率的なアルゴリズムを知っている人がいたら教えてください。
1 に答える
7
C++ では配列のサイズを変更できません。サイズ変更可能なコンテナーの最適なオプションは、次のstd::vector
ように使用するものです。
std::vector<int> v = {1,3,5,8,9,7};
次に、いくつかの述語で要素を削除します。
auto new_end = std::remove_if(v.begin(), v.end(),
std::bind(std::less<int>(), _1, 6));
しかし、これはあなたの周りの要素をシャッフルしてvector
、それらがすべて最後になるようにするだけです. それらを実際に消去するには、次のように呼び出す必要があります。
v.erase(new_end, v.end());
于 2013-10-07T15:57:59.927 に答える