1、 set(集合)——包含了經過排序了的數據,這些數據的值(value)必須是唯一的。
也就是說輸入set容器後得到數據,會去重並排序。
s.insert()插入一個元素
s.begin() s.end()分別返回首尾指針
s.clear() 清空集合
遍歷需要利用迭代器set<類型>::iterator 變量名 ;
3、vector(不定長數組)——不需要定義初始長度的數組
v.push_back()向尾部插入一個元素
v.size()返回數組大小
v.pop_back()刪除最後一個元素
v.insert(v[0]+i,a)在第i+1個元素後插入元素a
常用的就這幾個成員函數,看看粘的網上的介紹:
基本操作
(1)頭文件#include<vector>.
(2)創建vector對象,vector<int> vec;
(3)尾部插入數字:vec.push_back(a);
(4)使用下標訪問元素,cout<<vec[0]<<endl;記住下標是從0開始的。
(5)使用迭代器訪問元素.
vector<int>::iterator it;for(it=vec.begin();it!=vec.end();it++) cout<<*it<<endl;(6)插入元素: vec.insert(vec.begin()+i,a);在第i+1個元素前面插入a;
(7)刪除元素: vec.erase(vec.begin()+2);刪除第3個元素
vec.erase(vec.begin()+i,vec.end()+j);刪除區間[i,j-1];區間從0開始
(8)向量大小:vec.size();
(9)清空:vec.clear();
4、map(映射)——map就是從鍵(key)到值(value)的映射。例如可以這樣用:
先定義map<string,int> m; 賦值m["green"]=8 。看起來就是數組的高級版,可以改變下標的表示。
當遇到讓我們計算 一篇文章中某單詞出現的次數時,(如果它只提問一次單詞a出現的次數,那麼我們直接遍歷一次,但是如果它問了很多次時,總不能一遍遍遍歷吧,會超時的)這時候就用到映射了。
直接看示例:
5、queue(隊列)——“先進先出”的一種數據結構,感覺這些容器就是把數組改造,添加一些成員函數,使它用起來更方便些,理解的時候可以對照如果用數組實現這樣的功能有多麻煩。
其本操作:
1、定義:queue<int> q;
2、 q.push(a) 將元素a加入隊列
q.front()訪問首元素
q.back() 訪問尾元素
q.pop() 刪除首元素
q.size()返回元素個數
q.empty()判斷隊列是否為空
6、stack(棧)——“先進後出”的一種數據結構,和隊列類比看。
其本操作:
1、定義:stack<int> s;
2、 s.push(a) 將元素a壓入棧
s.top()訪問棧頂元素
s.pop() 刪除棧頂元素
s.size()返回元素個數
s.empty()判斷棧是否為空
待續……