listの使い方 C++

値の追加、削除が高速にできるlistというSTLライブラリがあるらしいので使い方をまとめた。

まずはlistヘッダをincludeする。

#include<list>

(1)宣言

「list<型名>リスト名」で宣言する。
[例]Aという名前のint型のlistを作る。

list<int>A;

(2)末尾に値を追加

「リスト名.push_back(追加する値)」で追加する。
[例]Aに0から4までの数値を追加する。

for (int i = 0; i < 5; i++) {
	A.push_back(i);
}

Aは今{0,1,2,3,4}となっている。

(3)先頭に値を追加

「リスト名.push_front(追加する値)」で追加する。
[例]Aに10から14までの数値を追加する。

for (int i = 10; i < 15; i++) {
	A.push_front(i);
}

Aは今{14,13,12,11,10,0,1,2,3,4}となっている。

(4)イテレータの宣言

イテレータとはlist内の値が何番目かを表す変数である。
今後の操作でイテレータが必要になるので宣言する。
「list<リストの型名>::iterator イテレータ名」で宣言する。
[例]Aに対してitrという名前のイテレータを宣言する。

list<int>::iterator itr;

(5)K番目(0-index)の値を削除

イテレータ名 = リスト名.begin();
 for (int i = 0; i < K; i++) {
   イテレータ名++;
 }
 イテレータ名=リスト名.erase(イテレータ名);」
でK番目の値を削除できる。
[例]Aの3番目の値(11)を削除する。

itr = A.begin();
for (int i = 0; i < 3; i++) {
	itr++;
}
itr=A.erase(itr);

Aは今{14,13,12,10,0,1,2,3,4}となっている。
なお、削除の前後でイテレータの値は変化しない。

(6)K番目の要素の直前に値を挿入する。

イテレータ名 = リスト名.begin();
 for (int i = 0; i < K; i++) {
   イテレータ名++;
 }
 リスト名.insert(イテレータ名,挿入する値);」
で挿入できる。
[例]Aの5番目の値(1)の直前に100を挿入する。

itr = A.begin();
for (int i = 0; i < 5; i++) {
	itr++;
}
A.insert(itr, 100);

今Aは{14,13,12,19,0,100,1,2,3,4}となっている。
なお、挿入と同時にイテレータの値は1増えている。

(7)要素の出力

[例]Aの全要素を出力する。

for (itr = A.begin(); itr != A.end(); itr++) {
	cout << *itr << ' ';
}

出力結果
14 13 12 10 0 100 1 2 3 4

(8)その他の機能

A.pop_front();

先頭の値を削除

A.pop_back();

末尾の値を削除