C++筆記之list使用
list為雙向連結串列,標頭檔案#include<list>
1.基本操作
插入:首端、尾端、中間(通過迭代器)查詢:沒有成員函式,只能通過find(ilist.begin(),ilist.end(),1),返回迭代器刪除:首端、尾端、中間(通過迭代器)排序:成員函式ilist.sort(),預設升序倒轉:ilist.reverse(),元素倒轉 判空:ilist.empty(),若為空,返回1;若不空,返回0.清空:ilist.clear().
2.函式列表
Lst1.assign() 給list賦值
Lst1.begin() 返回指向第一個元素的迭代器
Lst1.end() 返回末尾的迭代器
Lst1.rbegin() 返回指向第一個元素的逆向迭代器
Lst1.rend() 指向list末尾的逆向迭代器
Lst1.clear() 刪除所有元素
Lst1.empty() 如果list是空的則返回true
Lst1.push_back() 在list的末尾新增一個元素
Lst1.push_front() 在list的頭部新增一個元素
Lst1.front() 返回第一個元素
Lst1.pop_front() 刪除第一個元素
Lst1.back() 返回最後一個元素
Lst1.pop_back() 刪除最後一個元素
Lst1.remove() 從list刪除元素
Lst1.remove_if() 按指定條件刪除元素
Lst1.get_allocator() 返回list的配置器
Lst1.insert() 插入一個元素到list中
Lst1.max_size() 返回list能容納的最大元素數量
Lst1.merge() 合併兩個list
Lst1.resize() 改變list的大小
Lst1.size() 返回list中的元素個數
Lst1.sort() 給list排序
Lst1.reverse() 把list的元素倒轉
Lst1.splice() 合併兩個list
Lst1.swap() 交換兩個list
Lst1.unique() 刪除list中重複的元素
3.程式示例
#include<iostream>
#include<list>
#include<algorithm>
using namespace std;
int main(){
list<int> ilist;
list<int>::iterator it;
//插入
ilist.push_back(1);//尾端插入
ilist.push_back(2);
ilist.push_back(6);
ilist.push_back(9);
ilist.push_front(3);//頭部插入
ilist.push_front(4);
ilist.push_front(7);
ilist.push_front(8);
//查詢
it=find(ilist.begin(),ilist.end(),1);
it=ilist.insert(it,5);//中間插入
cout<<"it位置:"<<*it<<endl;
//輸出
cout<<"list大小:"<<ilist.size()<<endl;
for(it=ilist.begin();it!=ilist.end();it++) cout<<*it<<' ';
cout<<endl<<endl;
//刪除
cout<<"刪除頭元素:"<<ilist.front()<<endl;//返回頭元素
ilist.pop_front(); //刪除頭元素
cout<<"刪除尾元素:"<<ilist.back()<<endl;//返回尾元素
ilist.pop_back(); //刪除尾元素
it=find(ilist.begin(),ilist.end(),3);
cout<<"刪除中間元素:"<<*it<<endl;
ilist.erase(it); //刪除中間的4
cout<<"刪除中間元素:1"<<endl;
ilist.remove(1); //直接刪除元素
cout<<"刪除後list大小:"<<ilist.size()<<endl;
for(it=ilist.begin();it!=ilist.end();it++) cout<<*it<<' ';
cout<<endl<<endl;
//排序
ilist.sort();//預設升序
cout<<"預設排序:";
for(it=ilist.begin();it!=ilist.end();it++) cout<<*it<<' ';
cout<<endl;
cout<<"反向輸出:";
ilist.reverse();//元素倒轉
for(it=ilist.begin();it!=ilist.end();it++) cout<<*it<<' ';
cout<<endl<<endl;
/*
list<int> ilist2(ilist.rbegin(),ilist.rend());
for(it=ilist2.begin();it!=ilist2.end();it++) cout<<*it<<' ';
*/
//判空、清空
cout<<"list空嗎:"<<ilist.empty()<<endl;
ilist.clear();
cout<<"list空嗎:"<<ilist.empty()<<endl;
return 0;
}
執行結果:
參考