>> C++入門トップに戻る
今回はコンテナのlistについて説明します。
基本はvectorと使い方は一緒ですが、いくつか関数が増えています。
また、添字によるアクセスができなくなっていますので注意して下さい。
listコンテナを使うにはlistヘッダをインクルードする必要があります。
まず下記のコードを見てください。
これを実行するとこうなります。

宣言方法等は、vectorの時と一緒なので省略します。
増えた関数についてだけ解説します。
・push_front,pop_front関数
→先頭に要素の追加、削除を行う
・remove関数
→指定した値を持つ要素を全て削除
・sort関数
→コンテナ内の要素を昇順にソート
→降順にソートするには、sort関数の引数に【greater<コンテナの型>()】を指定する。
・merge関数
→コンテナ同士を結合させる。
→第一引数と第二引数にそれぞれ結合したいコンテナを指定するが、
第一引数のコンテナが結合後のコンテナになる。
→結合前にあらかじめソートしておく必要がある。
上記の関数の解説の通りです。
大きな違いとして、先頭要素の追加削除ができるようになったこと、
ソート、結合ができるようになったという点があげられます。
vectorで使った関数も同じように実装されています。(一部使えないかもしれませんが)
次回は、dequeについて説明します。
>> 【コンテナ【deque】】に進む
>> C++入門トップに戻る
コンテナ【list】
基本はvectorと使い方は一緒ですが、いくつか関数が増えています。
また、添字によるアクセスができなくなっていますので注意して下さい。
listコンテナを使うにはlistヘッダをインクルードする必要があります。
まず下記のコードを見てください。
#include <list>
using namespace std;
void func(list<int>::iterator begin,list<int>::iterator end){
for(;begin!=end;++begin){
printf("%d,",*begin);
}
//改行
printf("\n");
}
int main(void)
{
//listのコンテナ宣言
list<int> test,test2;
//listのイテレーターを宣言
list<int>::iterator begin,end;
//ループさせて要素を10個追加
for(int i=0;i<10;++i){
test.push_back(i);
}
//表示
func(test.begin(),test.end());
//先頭要素を削除。
test.pop_front();
//表示
func(test.begin(),test.end());
//先頭に5を追加。
test.push_front(5);
//表示
func(test.begin(),test.end());
//5の数字が付く要素を全削除
test.remove(5);
//表示
func(test.begin(),test.end());
//値を先頭に追加
test.push_front(25);
test.push_front(30);
//表示
func(test.begin(),test.end());
test.sort();
//表示
func(test.begin(),test.end());
//もう一つのコンテナ作成
test2.push_back(50);
test2.push_back(100);
//二つのコンテナを結合
test.merge(test2);
//表示
func(test.begin(),test.end());
//逆ソート
test.sort(greater<int>());
//表示
func(test.begin(),test.end());
return 0;
}
これを実行するとこうなります。

宣言方法等は、vectorの時と一緒なので省略します。
増えた関数についてだけ解説します。
・push_front,pop_front関数
→先頭に要素の追加、削除を行う
・remove関数
→指定した値を持つ要素を全て削除
・sort関数
→コンテナ内の要素を昇順にソート
→降順にソートするには、sort関数の引数に【greater<コンテナの型>()】を指定する。
・merge関数
→コンテナ同士を結合させる。
→第一引数と第二引数にそれぞれ結合したいコンテナを指定するが、
第一引数のコンテナが結合後のコンテナになる。
→結合前にあらかじめソートしておく必要がある。
上記の関数の解説の通りです。
大きな違いとして、先頭要素の追加削除ができるようになったこと、
ソート、結合ができるようになったという点があげられます。
vectorで使った関数も同じように実装されています。(一部使えないかもしれませんが)
次回は、dequeについて説明します。
>> 【コンテナ【deque】】に進む
>> C++入門トップに戻る













