C++のerase関数の使い方は何ですか?
C++のerase()関数は、コンテナから要素を1つまたは複数削除するために使用されます。
erase()関数には複数の使い方があります。
- 一つの要素を削除する際には、erase()関数を使用して、削除する要素の位置やイテレータを指定することができます。
- たとえば、ベクトル(vector)コンテナーでは、以下のコードを使用して位置iの要素を削除できます:
- vector myVector = {1, 2, 3, 4, 5};
myVector.erase(myVector.begin() + i);
ベクトル myVector = {1, 2, 3, 4, 5};
myVector.erase(myVector.begin() + i); - あるいは、イテレータを使用して要素を削除することもできます。
- it = myVector.begin() + i;
myVector.erase(it); - 指定した要素の範囲を削除する:erase()関数を使用して、特定の要素の範囲を削除することができます。
- 例えば、ベクトル(vector)コンテナーでは、iからjまでの位置にある要素を削除するために以下のコードを使用することができます:
- 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); - または、イテレーターを使用して範囲内の要素を削除することもできます。
- 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); - 条件を満たす要素を削除する:述語を使用して、erase()関数を使用して条件を満たす要素を削除することができます。
- たとえば、ベクトルコンテナの場合、特定の値と等しいすべての要素を削除するには、次のコードを使用できます:
- int配列 myVector = {1, 2, 3, 4, 5};
int value = 3;
myVector.erase(std::remove(myVector.begin(), myVector.end(), value), myVector.end()); - 上記のコードでは、std::remove()関数が特定の値と一致する要素をコンテナの末尾に移動し、その後erase()関数でこれらの要素を削除します。
erase()関数は、イテレータでアクセスが可能なコンテナ(例:vector、list、setなど)にのみ適用されることに注意する必要があります。関連コンテナ(例:mapやunordered_map)の場合は、特定の削除関数(例:erase()やerase_if())を使用する必要があります。