STL常用的容器

 

vector:相當於一個不定長數組。


vector的擴充機制是按照現在容量的一倍進行增長,每次增長是重新申請一塊更大的心內存,並把現在容器中的元素逐個複製過去,然後銷燬舊的內攢
1.頭文件:
#include<vector>
2.定義vector對象:
vector<int> a; //創建一個空的容器
vector<int> b(10,1);//創建一個初始10個元素,每個元素爲1的數組
vector<int> c(b.begin()+5,b.end());//選取從b的第五個元素開始到結束的元素創建一個新的容器
vector<int> d(b);//創建一個和b一樣的容器
vector<int> e(10);//創建一個有10個元素的容器
3.基本操作函數
vector<int>::iterator it=b.begin();//創建一個vector<int>的迭代器
c.begin();-------------------返回容器c的起始位置的迭代器
c.end():---------------------返回容器c的最後位置的迭代器
c.push_back(t);--------------向數組最後插入元素
c.pop_back(t);---------------刪除數組最後一個元素
b.at(3);---------------------返回編號爲3的數據
b.front();-------------------返回數組的第一個元素的值
b.back();--------------------返回數組的最後一個元素的值
b.insert(it+i,t)-------------在第i+1個元素前插入一個元素
b.assign(a.begin(),a.end())--將容器a的值賦值給容器b
b.erase(b.begin()+5);--------刪除第6個元素
b.erase(it+1,it+4);----------刪除第2個元素到第五個元素
b.size();--------------------返回容器大小
b.swap(d);-------------------將b和d交換數據
b.clear();-------------------清空當前的vector

 


set:就是數學上的集合——每個元素最多出現一次


1.頭文件
#include <set>
2.定義set對象:
set<int> a;//創建一個空的set容器
set<int> b(a.begin(),a.end());//創建一個從a.begin()到a.end()的容器,可以定義迭代器進行移動位置
set<int> c(a);//創建一個和a一樣的容器
3.基本操作函數:b.assign(a.begin(),a.end())--將容器a的值賦值給容器b
b.erase(b.begin()+5);--------刪除第6個元素
a.begin();-------------------返回開始的迭代器
a.end();---------------------返回最後的迭代器
a.insert(t);-----------------將元素t插入容器
a.count(t);------------------判斷a裏有沒有值爲t的元素若存在返回1否則返回0
a.empty();-------------------判斷容器是否爲空,如果爲空返回1否則返回0
a.size();--------------------返回容器內元素的個數
a.erase(a.begin());----------刪除首元素
a.erase(a.begin(),a.end());--刪除區間內元素
a.erase(3);------------------刪除值爲3的元素
a.find(3);-------------------返回值爲3的迭代器
a.swap(b);-------------------交換兩個容器的值
a.clear();-------------------清空當前set

 


map:就是從鍵到值得映射,重載了[]運算符

 

map像數組的“高級版”,例如:map<string,int> mouth_name; 可以用這樣的方式複製mouth_name["July"]=7(如果沒有July下標的實例會自動插入
map和set很相似,map允許重複元素,並且map比set多一個鍵值
1.頭文件
#include <map>
2.定義map對象:
max<int,string> a;
3.常用函數
a.begin();--------------------------------------返回開始的迭代器
a.end();----------------------------------------返回最後的迭代器
a.insert(pair<int,string>(123,"abcde"));--------插入下標爲123值爲abcde的元素
a.begin()->first;-------------------------------定義max<int,string> a來說,表示map對象第一個元素的int型數據
a.begin()->second;------------------------------定義max<int,string> a來說,表示map對象第二個元素的string型數據
a.find(3)---------------------------------------返回下標爲3的元素的迭代器,如果沒有返回最後一個元素的迭代器
a.count(2)--------------------------------------判斷a裏有沒有下標爲2的元素若存在返回1否則返回0
a.erase(2)--------------------------------------刪除鍵爲2的元素
a.erase(a.begin());-----------------------------刪除第1個元素
a.erase(a.begin(),a.end());---------------------刪除區間內元素
a.empty();--------------------------------------判斷容器是否爲空,如果爲空返回1否則返回0
a.size();---------------------------------------返回容器內元素個數
a.swap(b);--------------------------------------交換兩個容器的值
a.clear();--------------------------------------清空當前map

 


stack:棧


1.頭文件
#include<stack>
2.定義stack對象:
stack<int> a;
3.基本操作函數:
int t;
a.push(t);----------將t的值入棧,無返回值
a.pop();------------出棧無返回值,無返回值
a.empty();----------判斷棧是否爲空,如果爲空返回1否則返回0
a.top();------------返回棧頂元素
a.size();-----------返回棧的元素數目

 

 

queue:隊列


1.頭文件
#include<queue>
2.定義queue對象:
queue<int> a;
3.基本操作函數:
int t;
a.push(t);----------將t入隊,無返回值
a.pop();------------刪除第一個元素
a.empty();----------判斷隊列是否爲空,如果爲空返回1否則返回0
a.front();----------返回隊列第一個元素
a.back();-----------返回隊列最後一個元素
a.size();-----------返回隊列長度

 

 

list:雙向鏈表


1.頭文件
#include<list>
2.定義list對象
list<int> L0; // 空鏈表
list<int> L1(9); // 建一個含個默認值是的元素的鏈表
list<int> L2(5,1); // 建一個含5個元素的鏈表,值都是1
list<int> L3(L2); // 建一個L2的copy鏈表
list<int> L4(L0.begin(), L0.end());//建一個含L0一個區域的元素
3.基本操作函數:
L1.assign(4,3);----------------------分配4個元素,值爲3
L1.assign(L2.begin(),L2.end());------分配區間的分配值
L1.begin();--------------------------返回第一個元素的迭代器
L1.end();----------------------------返回最後一個元素的下一個元素的迭代器
L1.push_back(4);---------------------插入一個元素到鏈表尾
L1.push_front(4);--------------------插入一個元素到鏈表頭
L1.pop_back();-----------------------刪除最後一個元素
L1.pop_front();----------------------刪除第一個元素
L1.erase(L1.begin());----------------刪除迭代器指向的元素
L1.erase(L1.begin(),L1.end());-------刪除區間元素
L1.remove(3);------------------------刪除鏈表中值爲3的全部元素
L1.size();---------------------------返回鏈表的值
L1.reverse();------------------------反轉鏈表
L1.sort();---------------------------將鏈表的值升序排列
L1.sort(greater<int>());-------------降序排列
L1.swap(L2);-------------------------L1和L2的值互換
L1.unique();-------------------------刪除相鄰重複元素
L1.clear();--------------------------清空鏈表

posted on 2016-08-07 18:06 asuml 閱讀(...) 評論(...) 編輯 收藏
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章