1

質問があります。C++ で 1 次元配列から複数の要素を削除するにはどうすればよいですか? 配列 A={1,3,5,8,9,7} があり、配列 A から 3,5,7 を削除したいとします。効率的なアルゴリズムを知っている人がいたら教えてください。

4

1 に答える 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 に答える