C++のerase関数の使い方は何ですか?

C++のerase()関数は、コンテナから要素を1つまたは複数削除するために使用されます。

erase()関数には複数の使い方があります。

  1. 一つの要素を削除する際には、erase()関数を使用して、削除する要素の位置やイテレータを指定することができます。
  2. たとえば、ベクトル(vector)コンテナーでは、以下のコードを使用して位置iの要素を削除できます:
  3. vector myVector = {1, 2, 3, 4, 5};
    myVector.erase(myVector.begin() + i);
    ベクトル myVector = {1, 2, 3, 4, 5};
    myVector.erase(myVector.begin() + i);
  4. あるいは、イテレータを使用して要素を削除することもできます。
  5. it = myVector.begin() + i;
    myVector.erase(it);
  6. 指定した要素の範囲を削除する:erase()関数を使用して、特定の要素の範囲を削除することができます。
  7. 例えば、ベクトル(vector)コンテナーでは、iからjまでの位置にある要素を削除するために以下のコードを使用することができます:
  8. vector myVector = {1, 2, 3, 4, 5};
    myVector.erase(myVector.begin() + i, myVector.begin() + j + 1);ベクター myVector = {1, 2, 3, 4, 5};
    myVector.erase(myVector.begin() + i, myVector.begin() + j + 1);
  9. または、イテレーターを使用して範囲内の要素を削除することもできます。
  10. vector::iterator start = myVector.begin() + i;
    vector::iterator end = myVector.begin() + j + 1;
    myVector.erase(start, end);ベクトルの反復子start = myVector.begin() + i;
    ベクトルの反復子end = myVector.begin() + j + 1;
    myVector.erase(start, end);
  11. 条件を満たす要素を削除する:述語を使用して、erase()関数を使用して条件を満たす要素を削除することができます。
  12. たとえば、ベクトルコンテナの場合、特定の値と等しいすべての要素を削除するには、次のコードを使用できます:
  13. int配列 myVector = {1, 2, 3, 4, 5};
    int value = 3;
    myVector.erase(std::remove(myVector.begin(), myVector.end(), value), myVector.end());
  14. 上記のコードでは、std::remove()関数が特定の値と一致する要素をコンテナの末尾に移動し、その後erase()関数でこれらの要素を削除します。

erase()関数は、イテレータでアクセスが可能なコンテナ(例:vector、list、setなど)にのみ適用されることに注意する必要があります。関連コンテナ(例:mapやunordered_map)の場合は、特定の削除関数(例:erase()やerase_if())を使用する必要があります。

bannerAds