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();
末尾の値を削除