参照https://www.cnblogs.com/fnlingnzb-learner/p/5889483.html
リストは順次要素のリストに格納されている。急激な挿入および除去を可能にするベクター(ベクター)が、ランダムアクセスに比べてより遅いです。
共通機能:
ASSIGN()の割り当てを一覧表示する
(バック)は最後の要素を返します
(開始)反復子の最初の要素へのポインタを返す
クリア()すべての要素削除
の空を()リストが空であるならば、真に戻る
(終了)終了を返します。イテレータ
消去()要素の除去
フロント()は、第1の素子返す
(get_allocator)をリストコンフィギュレータ戻る
インサート()要素が、リスト内に挿入され
MAX_SIZE()リスト要素の最大数を収容することができる返す
(マージ)をマージ2リスト
pop_back()は最後の要素の削除
pop_front()は最初の要素の削除
一back()のリストの最後に要素を追加
ヘッドのリストに要素を追加するpush_front()
逆反復の最初の要素へのポインタを返す)rbeginを(さ
削除()リストから要素を削除
(remove_if)を要素指定された条件を削除
レンドにリスト逆イテレータの最後に()点
のリストサイズに変更するサイズ変更()
の逆()反転要素のリスト
)(サイズは、リスト内の要素の数を返します数
種の()は、リストのソートする
(スプライス)の2つのリストをマージ
スワップ()2つのリストスワップ
リスト内の重複する要素を削除するにはUNIQUE()を
バグ
必要下記のコードでは、反復子ITERの定義ことに留意されlist<int>::iterator iter;
、以下のように、このような使用が報告される場合、メソッド定義反復子がメイン機能でコンパイルされたとき、しかしput_listイテレータで定義された関数間違っている、あなたは以前を使用する必要があるtypedef list<int> INLIST;
、INLIST::iterator iter;
私はなぜ知りません
/home/jlm/桌面/main.cpp:16:7: error: expected primary-expression before ‘int’
list<int>::iterator iter;
サンプルコードの共通の1-
#include <iostream>
#include <string>
#include <list>
using namespace std;
typedef list<int> INLIST;
//从前向后显示list队列的全部元素
void put_list(list<int> list,string name)
{
if(list.empty())
{
cout<<"list--"<<name<<"is empty!"<<endl;
return;
}
INLIST::iterator iter;
cout<<"The contents of "<<name<<":";
for(iter=list.begin();iter!=list.end();iter++)
cout<<*iter<<" ";
cout<<endl;
}
//测试list容器的功能
int main(void)
{
//三种初始化list的方式
//list1对象初始为空
list<int> list1;
//list2对象最初有10个值为6的int元素
list<int> list2(10,6);
//list3对象最初有3个值为6的int元素
list<int> list3(list2.begin(),--list2.end());
//声明一个名为iter的迭代器
list<int>::iterator iter;
//从前向后显示各个list对象的元素
put_list(list1,"list1");
put_list(list2,"list2");
put_list(list3,"list3");
//向list1序列后面添加两个元素
list1.push_back(2);
list1.push_back(4);
cout<<"list1.push_back(2) and list.push_back(4): "<<endl;
put_list(list1,"list1");
//在list1序列中插入数据
list1.insert(++list1.begin(),3,9);
cout<<"list1.insert(list1.begin()+1,3,9): "<<endl;
//测试引用类函数
cout<<"list1.front()= "<<list1.front()<<endl;
cout<<"list1.back()= "<<list1.back()<<endl;
//从list1序列的前后各移去一个元素
list1.pop_front();
list1.pop_back();
cout<<"list1.pop_front() anf list1.pop_back(): "<<endl;
put_list(list1,"list1");
//清除list1中的第二个元素
list1.erase(++list1.begin());
cout<<"list1.erase(++list1.begin()): "<<endl;
put_list(list1,"list1");
//对list2赋值并显示
list2.assign(8,1);
cout<<"list2.assign(8,1): "<<endl;
put_list(list2,"list2");
//显示序列的状态信息
cout<<"list1.max_size(): "<<list1.max_size()<<endl;
cout<<"list1.size(): "<<list1.size()<<endl;
cout<<"list1.empty(): "<<list1.empty()<<endl;
//list序列容器的运算
put_list(list1,"list1");
put_list(list3,"list3");
cout<<"list1>list3: "<<(list1>list3)<<endl;
cout<<"list1<list3: "<<(list1<list3)<<endl;
//对list1容器排序
list1.sort();
put_list(list1,"list1");
//结合处理
list1.splice(++list1.begin(),list3);
put_list(list1,"list1");
put_list(list3,"list3");
}
2 -listの比較例コード
#include <iostream>
#include <string>
#include <list>
using namespace std;
typedef list<int> INLIST;
//从前向后显示list队列的全部元素
void put_list(list<int> list,string name)
{
if(list.empty())
{
cout<<"list--"<<name<<"is empty!"<<endl;
return;
}
INLIST::iterator iter;
cout<<"The contents of "<<name<<":";
for(iter=list.begin();iter!=list.end();iter++)
cout<<*iter<<" ";
cout<<endl;
}
//测试list容器的功能
int main(void)
{
//三种初始化list的方式
//list1有1个值为9的元素
list<int> list1(1,9);
//list2对象最初有3个值为6的int元素
list<int> list2(3,6);
cout<<"(list1(1,9)>list2(3,6)): "<<(list1>list2)<<endl;
//list3有3个值为6的元素
list<int> list3(3,6);
//list2对象最初有3个值为6的元素
list<int> list4(3,6);
cout<<"(list3(3,6)>list4(3,6)): "<<(list3>list4)<<endl;
//list5有4个值为6的元素
list<int> list5(4,6);
//list6对象最初有3个值为6的元素
list<int> list6(3,6);
cout<<"(list5(4,6)>list6(3,6)): "<<(list5>list6)<<endl;
//list7有4个值为6的元素
list<int> list7(100,1);
//list8对象最初有3个值为6的元素
list<int> list8(3,6);
cout<<"(list7(100,1)>list8(3,6)): "<<(list7>list8)<<endl;
}
(list1(1,9)>list2(3,6)): 1
(list3(3,6)>list4(3,6)): 0
(list5(4,6)>list6(3,6)): 1
(list7(100,1)>list8(3,6)): 0
二つのリストの得られた結果を分析することができるから、(LIST1> LIST2)結果1つのアウトずつ、サイズ比較の対応する要素タイプの比較の結果を比較して、結果のサイズが返された場合に発生します。