パープルハット

※当サイトではGoogleアドセンス広告を利用しています

C++ vector 追加と削除(push_back, insert, erase, etc)



一覧

処理 関数
末尾への追加 push_back
n番目へ追加 insert
末尾の削除 pop_back
n番目の削除 erase
特定の値を削除 std::erase





末尾への要素の追加(push_back)

  • 変数名.push_back(追加したい要素)で末尾に要素を追加できます。

push_backのイメージ

サンプルコード:末尾に7を追加

#include<iostream>
#include<vector>

int main() {
	std::vector<int> v{ 3, 4, 2 };

	//末尾に7を追加
	v.push_back(7);

	//中身を列挙
	for (int a : v)
		std::cout << a << ", ";
}

実行結果

3, 4, 2, 7,




n番目に要素を追加(insert)

  • イテレータを使うことでn番目に要素を追加できます。
  • イテレータにはbegin()~end()まで指定できます。

insertのイメージ

サンプルコード1:前から1番目に-2を追加

#include <iostream>
#include <vector>

int main() {
    std::vector<int> v{ 3, 4, 2 };

    v.insert(v.begin() + 1, -2);

    // 列挙
    for (int a : v)
        std::cout << a << ", ";
}

実行結果

3, -2, 4, 2, 



サンプルコード2:後ろから1番目に7を追加

#include <iostream>
#include <vector>

int main() {
    std::vector<int> v{ 3, 4, 2 };

    v.insert(v.end() - 1, 7);

    // 列挙
    for (int a : v)
        std::cout << a << ", ";
}

実行結果

3, 4, 7, 2,





末尾の削除(pop_back)

  • 変数名.pop_back()で末尾の要素を削除できます。

pop_backのイメージ

サンプルコード

#include<iostream>
#include<vector>

int main() {
	std::vector<int> v{ 3, 4, 2 };

	//末尾を削除
	v.pop_back();

	//中身を列挙
	for (int a : v)
		std::cout << a << ", ";
}

実行結果

3, 4,





n番目の要素の削除(erase)

  • 指定できるイテレータはbegin()~end()-1。
  • イテレータの指定の仕方で、複数の要素をまとめて削除できる

eraseのイメージ

サンプルコード1:n番目の要素を削除

#include<iostream>
#include<vector>

int main() {
	std::vector<int> v{ 1, 2, 3, 4, 5, 6 };

	//前から2番目の要素を削除
	v.erase(v.begin() + 2);

	//中身を列挙
	for (int a : v)
		std::cout << a << ", ";
}

実行結果

1, 2, 4, 5, 6,



サンプルコード2:複数の要素をまとめ削除

  • 今回は、先頭と末尾以外の全要素を削除します。
#include<iostream>
#include<vector>

int main() {
	std::vector<int> v{ 1, 2, 3, 4, 5, 6 };

	//前から2番目の要素を削除
	v.erase(v.begin() + 1, v.end() - 1);

	//中身を列挙
	for (int a : v)
		std::cout << a << ", ";
}

実行結果

1, 6,





指定した値を削除(std::erase)

std::erase(vector, 値)とすることでvector内の指定した値を全削除することができます。

サンプルコード:vectorから1を削除

#include<iostream>
#include<vector>

int main() {
	std::vector<int> v{ 1, 2, 1, 4, 1, 1 };

	// "1"を削除
	std::erase(v, 1);

	//中身を列挙
	for (int a : v)
		std::cout << a << ", ";
}

実行結果

2, 4,