>> 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++入門トップに戻る