1. 程式人生 > >C++筆記之list使用

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;
} 

執行結果:

參考