日本搞逼视频_黄色一级片免费在线观看_色99久久_性明星video另类hd_欧美77_综合在线视频

國內(nèi)最全IT社區(qū)平臺 聯(lián)系我們 | 收藏本站
阿里云優(yōu)惠2
您當前位置:首頁 > 互聯(lián)網(wǎng) > STL 筆記(一): 順序容器 vector、list、deque

STL 筆記(一): 順序容器 vector、list、deque

來源:程序員人生   發(fā)布時間:2014-10-10 08:00:00 閱讀次數(shù):2354次

STL 容器類

C++ STL 體現(xiàn)了泛型編程的思想,廣義上分為: 容器 (Container),迭代器 (Iterator),算法 (Algorithm)。容器類可以包含一組相同類型或不同類型的對象,包含相同類型對象時稱為同類容器類,包含不同類型對象時,稱為異類容器類。容器類庫共包含 10 種容器,分為三類:
  • 順序容器:向量 (vector)、雙端隊列 (deque)、列表 (list);
  • 關(guān)聯(lián)容器:集合 (set)、多重集合 (multiset)、映射 (map)和多重映射 (multimap);
  • 容器適配器:棧 (stack)、隊列 (queue)和優(yōu)先隊列 (priority queue);

STL 三種順序容器的特性對比:

  • vector 可變數(shù)組,內(nèi)存空間是連續(xù)的,容量不會進行縮減。支持高效隨機存取,即支持[]和at()操作。尾部插入刪除效率高,其他位置插刪效率較低;
  • list 雙向鏈表,內(nèi)存空間可不連續(xù),不支持隨機存取。插入和刪除的效率很高;
  • deque  雙端隊列,內(nèi)存空間是多個連續(xù)的內(nèi)存塊,在一個映射結(jié)構(gòu)中保存對這些塊以及順序的跟蹤,可利用的內(nèi)存更大,且內(nèi)存大小是可以自動縮減的。支持隨機存取,但是隨機存取性能沒有vector 好。首尾插入效率高,其他位置插刪效率低;

使用注意:

  • 對于 vector 和 deque,使用隨機訪問時注意不要越界;
  • 對于 vector 的非尾部插入刪除和 deque的非首尾插入刪除,會導致部分元素的移動,這是需要考慮之前正在用的迭代器、指針或索引是否需要調(diào)整;

vector 容器常用函數(shù):

#構(gòu)造: vector(): #創(chuàng)建一個空vector vector(int nSize): #創(chuàng)建一個vector,元素個數(shù)為nSize vector(int nSize,const t& t): #創(chuàng)建一個vector,元素個數(shù)為nSize,且值均為t vector(const vector&): #復制構(gòu)造函數(shù) vector(begin,end): #復制[begin,end)區(qū)間內(nèi)另一個數(shù)組的元素到vector中 #增刪: void push_back(const T& x): #向量尾部增加一個元素X iterator insert(iterator it,const T& x): #向量中迭代器指向元素前增加一個元素x iterator insert(iterator it,int n,const T& x): #向量中迭代器指向元素前增加n個相同的元素x iterator insert(iterator it,const_iterator first,const_iterator last): #向迭代器指向元素前插入另一個相同類型向量的[first,last)間的數(shù)據(jù) iterator erase(iterator it): #刪除向量中迭代器指向元素 iterator erase(iterator first,iterator last): #刪除向量中[first,last)中元素 void pop_back(): #刪除向量中最后一個元素 void clear(): #清空向量中所有元素 #遍歷: reference at(int pos): #返回pos位置元素的引用 reference front(): #返回首元素的引用 reference back(): #返回尾元素的引用 iterator begin(): #返回向量頭指針,指向第一個元素 iterator end(): #返回向量尾指針,指向向量最后一個元素的下一個位置 reverse_iterator rbegin(): #反向迭代器,指向最后一個元素 reverse_iterator rend(): #反向迭代器,指向第一個元素之前的位置 #功能: bool empty() const: #判斷向量是否為空,若為空,則向量中無元素 int size() const: #返回向量中元素的個數(shù) int capacity() const: #返回當前向量張紅所能容納的最大元素值 int max_size() const: #返回最大可允許的vector元素數(shù)量值 void swap(vector&): #交換兩個同類型向量的數(shù)據(jù) void assign(int n,const T& x): #設(shè)置向量中第n個元素的值為x void assign(const_iterator first,const_iterator last): #向量中[first,last)中元素設(shè)置成當前向量元素

list 容器常用函數(shù):

#構(gòu)造: list<Elem> c: #創(chuàng)建一個空的list list<Elem> c1(c2): #復制另一個同類型元素的list list<Elem>c(n): #創(chuàng)建n個元素的list,每個元素值由默認構(gòu)造函數(shù)確定 list<Elem>c(n,elem): #創(chuàng)建n個元素的list,每個元素的值為elem list<Elem>c(begin,end): #由迭代器創(chuàng)建list,迭代區(qū)間為[begin,end) #增刪: void push_back(const T& x): #尾部增加一個元素x void push_front(const T& x): #首部添加一個元素X void pop_back(): #刪除容器尾元素,當且僅當容器不為空 void pop_front(): #刪除容器首元素,當且僅當容器不為空 void remove(const T& x): #刪除容器中所有元素值等于x的元素 void clear(): #刪除容器中的所有元素 iterator insert(iterator it, const T& x ): #在迭代器指針it前插入元素x,返回x迭代器指針 void insert(iterator it,size_type n,const T& x): #迭代器指針it前插入n個相同元素x void insert(iterator it,const_iterator first,const_iteratorlast): #把[first,last)間的元素插入迭代器指針it前 iterator erase(iterator it): #刪除迭代器指針it對應的元素 iterator erase(iterator first,iterator last): #刪除迭代器指針[first,last)間的元素 #遍歷: iterator begin(): #返回首元素的迭代器指針 iterator end(): #返回尾元素之后位置的迭代器指針 reverse_iterator rbegin(): #返回尾元素的逆向迭代器指針,用于逆向遍歷容器 reverse_iterator rend(): #返回首元素前一個位置的迭代器指針 reference front(): #返回首元素的引用 reference back(): #返回尾元素的引用 #功能: void sort(): #容器內(nèi)所有元素排序,默認是升序 template<class Pred>void sort(Pred pr): #容器內(nèi)所有元素根據(jù)預斷定函數(shù)pr排序 void swap(list& str): #兩list容器交換功能 void unique(): #容器內(nèi)相鄰元素若有重復的,則僅保留一個 void splice(iterator it,list& li): #隊列合并函數(shù),隊列l(wèi)i所有函數(shù)插入迭代指針it前,x變成空隊列 void splice(iterator it,list& li,iterator first): #隊列l(wèi)i中移走[first,end)間元素插入迭代指針it前 void splice(iterator it,list& li,iterator first,iterator last): #x中移走[first,last)間元素插入迭代器指針it前 void reverse(): #反轉(zhuǎn)容器中元素順序

deque 容器常用函數(shù)

#構(gòu)造 deque(): #創(chuàng)建一個空deque deque(int nSize): #創(chuàng)建一個deque,元素個數(shù)為nSize deque(int nSize,const T& t): #創(chuàng)建一個deque,元素個數(shù)為nSize,且值均為t deque(const deque &): #復制構(gòu)造函數(shù) #增刪: void push_front(const T& x): #雙端隊列頭部增加一個元素X void push_back(const T& x): #雙端隊列尾部增加一個元素x iterator insert(iterator it,const T& x): #雙端隊列中某一元素前增加一個元素x void insert(iterator it,int n,const T& x): #雙端隊列中某一元素前增加n個相同的元素x void insert(iterator it,const_iterator first,const_iteratorlast): #雙端隊列中某一元素前插入另一個相同類型向量的[forst,last)間的數(shù)據(jù) iterator erase(iterator it): #刪除雙端隊列中的某一個元素 iterator erase(iterator first,iterator last): #刪除雙端隊列中[first,last)中的元素 void pop_front(): #刪除雙端隊列中最前一個元素 void pop_back(): #刪除雙端隊列中最后一個元素 void clear(): #清空雙端隊列中最后一個元素 #遍歷: reference at(int pos): #返回pos位置元素的引用 reference front(): #返回手元素的引用 reference back(): #返回尾元素的引用 iterator begin(): #返回向量頭指針,指向第一個元素 iterator end(): #返回指向向量中最后一個元素下一個元素的指針(不包含在向量中) reverse_iterator rbegin(): #反向迭代器,指向最后一個元素 reverse_iterator rend(): #反向迭代器,指向第一個元素的前一個元素 #功能: bool empty() const: #向量是否為空,若true,則向量中無元素 int size() const: #返回向量中元素的個數(shù) int max_size() const: #返回最大可允許的雙端對了元素數(shù)量值 void swap(deque&): #交換兩個同類型隊列的數(shù)據(jù) void assign(int n,const T& x): #向量中第n個元素的值設(shè)置為x

vector 小例子:

關(guān)于 vector 的一個小例子
#include <iostream> #include <algorithm> #include <vector> using namespace std; void display(int val){ cout<< val <<' '; } int main(){ vector<int> v; for (int i = 0; i < 10; ++i) { v.push_back(i); } for_each(v.begin(), v.end(), display); // for_each 函數(shù)模版 cout<<" Use iterator "; vector<int>::iterator iter; for(iter = v.begin(); iter != v.end(); ++iter){ cout<< *iter << " "; } cout<<"---"<<v.at(9); cout<<" This is an two-dimensional array "; vector< vector<int> > array; vector<int> line; for(int i = 0; i < 5; ++i){ array.push_back(line); for(int j = 0; j < 9; ++j){ array[i].push_back(j); } } for(int i = 0; i < 5; ++i){ for(int j = 0; j < array[i].size(); ++j){ cout<< array[i][j] <<" "; } cout<<endl; } return 0; } /* 結(jié)果: 0 1 2 3 4 5 6 7 8 9 Use iterator 0 1 2 3 4 5 6 7 8 9 ---9 This is an two-dimensional array 0 1 2 3 4 5 6 7 8 0 1 2 3 4 5 6 7 8 0 1 2 3 4 5 6 7 8 0 1 2 3 4 5 6 7 8 0 1 2 3 4 5 6 7 8 */

【地址:http://blog.csdn.net/thisinnocence/article/details/39579647】

生活不易,碼農(nóng)辛苦
如果您覺得本網(wǎng)站對您的學習有所幫助,可以手機掃描二維碼進行捐贈
程序員人生
------分隔線----------------------------
分享到:
------分隔線----------------------------
關(guān)閉
程序員人生
主站蜘蛛池模板: 日韩av一区二区在线观看 | 免费av高清 | 欧美精品综合 | 91麻豆国产福利精品 | 一区二区三区不卡视频在线观看 | 国产一区二区三区 在线 | 99久精品视频 | 国产精品一二三四区 | 一区二区精 | 精品欧美一区二区在线观看 | 日韩1区| 91日日| 国产视频二区在线 | 狠狠插狠狠操 | 黄色一级毛片免费 | 国产精品18| www久久综合 | 久久精品 | 国产亚洲视频在线观看 | 欧美日韩国产精品 | 狠狠操天天干 | 日韩欧美中文字幕在线视频 | 国产白浆在线观看 | 日本久久精 | 操伊人 | 亚洲成人免费观看 | 国产精品每日更新 | 国产精品久久久av | 国产精品久久久久久久久潘金莲 | 狠狠色网站 | 一级国产在线 | 直接看av的网站 | 欧美成网站 | 国产成人午夜视频 | 国产精品一区二区三区久久久 | 日本黄在线 | 久久精品视频在线 | 欧美国产在线观看 | 91在线精品秘密一区二区 | 福利片在线观看 | 久久久久久久久综合 |