[C++]Vectorの後ろからN個の要素を削除するには?

C++

どうも、ちょげ(@chogetarou)です。

Vectorの末尾からN個の要素を削除する方法を紹介します。

スポンサーリンク

方法

インターフェース, インターネット, プログラム, ブラウザ, Www

Vectorの後ろからN個の要素を削除する方法は、3つあります。

resize()

1つ目は、resize()を使う方法です。

まず、Vectorからresize()を呼び出します。

そして、resize()の引数に、Vectorのsize()を削除する要素数で引いた値を指定します。

//vect=任意のVector, n=削除する要素数
vect.resize(vect.size() - n);

上記のresize()は、Vectorの末尾からN個の要素を削除します。

使用例

#include <iostream>
#include <vector>
using namespace std;

int main(void){
    vector<int> num = { 1, 2, 3, 4, 5, 6 };
  
    int n = 3;
    num.resize(num.size() - n);
    
    for (int &i: num) {
        cout << i << endl;
    }
}
出力:
1
2
3

erase()

2つ目は、erase()を使う方法です。

まず、Vectorからerase()を呼び出します。

そして、erase()の第1引数にVectorのend()を削除する要素数で引いた値、第2引数にVectorのend()を指定します。

//vect=任意のVector, n=削除する要素数
vect.erase(vect.end() - n, vect.end());

上記のerase()は、Vectorの末尾からN個の要素を削除します。

使用例

#include <iostream>
#include <vector>
using namespace std;

int main(void){
    vector<int> num = { 1, 2, 3, 4, 5, 6 };
  
    int n = 3;
    num.erase(num.end() - n, num.end());
    
    for (int &i: num) {
        cout << i << endl;
    }
}
出力:
1
2
3

forループ

3つ目は、forループを使う方法です。

まず、削除する要素の数でforループします。

そして、forループの処理で、Vectorからpop_back()を呼び出します。

//vect=任意のVector, n=削除する要素数
for (int i = 0; i < n; i++){
    vect.pop_back();
}

上記のforループは、Vectorの末尾からN個の要素を削除します。

pop_back()は、呼び出したVectorの最後の要素を削除します。

使用例

#include <iostream>
#include <vector>
using namespace std;

int main(void){
    vector<int> num = { 1, 2, 3, 4, 5, 6 };
  
    int n = 3;
    for (int i = 0; i < n; i++){
        num.pop_back();
    }
    
    for (int &i: num) {
        cout << i << endl;
    }
}
出力:
1
2
3

まとめ

Vectorの後ろからN個の要素を削除する方法は、次の3つです。

  • resize()を使う方法
    vect.resize(vect.size() - n);
  • erase()を使う方法
    vect.erase(vect.end() - n, vect.end());
  • forループを使う方法

コメント

タイトルとURLをコピーしました