C++STL學習——List容器
阿新 • • 發佈:2018-12-21
List容器
List簡介
- list是一個雙向連結串列容器,可高效地進行插入刪除元素。
- list不可以隨機存取元素,所以不支援at.(pos)函式與[]操作符。It++(ok) it+5(err)
- 標頭檔案
#include<list>
list物件的預設構造
list採用採用模板類實現,物件的預設構造形式:list lstT; 如:
list<int> lstInt; //定義一個存放int的list容器。
list<float> lstFloat; //定義一個存放float的list容器。
list<string> lstString; //定義一個存放string的list容器。
//尖括號內還可以設定指標型別或自定義型別。
list新增移除操作
list.push_back(elem); //在容器末尾加入一個元素
list.pop_back(); //刪除容器中最後一個元素
list.push_front(elem); //在容器開頭加入一個元素
list.pop_front(); //在容器開頭移除第一個元素
list的資料存取
list.front(); //返回第一個元素
list.back(); //返回最後一元素
list迭代器
list.begin (); //返回容器中第一個元素的迭代器。
list.end(); //返回容器中最後一個元素之後的迭代器。
list.rbegin(); //返回容器中倒數第一個元素的迭代器。
list.rend(); //返回容器中倒數最後一個元素的後面的迭代器。
list的大小
list.size(); //返回容器中元素的個數
list.empty(); //判斷容器是否為空
list.resize(num); //重新指定容器的長度為num,若容器變長,則以預設值填充新位置。如果容器變短,則末尾超出容器長度的元素被刪除。
list.resize(num,elem); //重新指定容器的長度為num,若容器變長,則以elem值填充新位置。如果容器變短,則末尾超出容器長度的元素被刪除。
list的插入
list.insert(pos,elem); //在pos位置插入一個elem元素的拷貝,返回新資料的位置。
list.insert(pos,n,elem); //在pos位置插入n個elem資料,無返回值。
list.insert(pos,beg,end); //在pos位置插入[beg,end)區間的資料,無返回值。
list的刪除
list.clear(); //移除容器所有元素
list.erase(beg,end); //刪除[beg,end)區間的資料,返回下一個資料的位置。
list.erase(pose); //刪除pos位置的資料,返回下一個資料的位置。
list.remove(elem); //刪除容器中所有與elem值匹配的元素。
list的反序排列
list.reverse(); //反轉連結串列,比如lst包含1,3,5元素,執行此方法後,lst就包含5,3,1元素。
程式碼演示
#include<iostream>
#include<list>
#include<iterator>
using namespace std;
int main()
{
int a[5]={1,2,3,4,5};
list<int> l(a,a+5);
l.push_back(10); //向連結串列末尾新增元素10
cout<<l.front()<<" "<<l.back()<<endl;
l.pop_back(); //返回連結串列最後一個元素
l.pop_front(); //返回連標第一個元素
cout<<"l.size()="<<l.size()<<endl; //1 10
for(list<int>::iterator it=l.begin();it!=l.end();it++)
{
cout<<*it<<" "; //2 3 4 5
}
cout<<endl;
l.reverse();
for(auto i=l.begin();i!=l.end();i++)
{
cout<<*i<<" "; //5 4 3 2
}
cout<<endl;
return 0;
}