国产精品电影_久久视频免费_欧美日韩国产激情_成年人视频免费在线播放_日本久久亚洲电影_久久都是精品_66av99_九色精品美女在线_蜜臀a∨国产成人精品_冲田杏梨av在线_欧美精品在线一区二区三区_麻豆mv在线看

STL容器之雙端隊列和表容器類

開發(fā) 后端
本文介紹的是STL組件之一的容器中的雙端隊列容器類和表容器類。希望對你有幫助,一起來看吧!

STLC++的一個類庫。STL中的容器有隊列容器和關(guān)聯(lián)容器,容器適配器(congtainer adapters:stack,queue,priority queue),位集(bit_set),串包(string_package)等等。

在系列中,我將介紹list,vector,deque等隊列容器,和set和multisets,map和multimaps等關(guān)聯(lián)容器,一共7種基本容器類。

隊列容器(順序容器):隊列容器按照線性排列來存儲T類型值的集合,隊列的每個成員都有自己的特有的位置。順序容器有向量類型、雙端隊列類型、列表類型三種。

下面介紹雙端隊列容器類和表容器類。

雙端隊列(deque容器類):

deque(讀音:deck,意即:double queue,#include<qeque>)容器類與vector類似,支持隨機訪問和快速插入刪除,它在容器中某一位置上的操作所花費的是線性時間。與vector不同的是,deque還支持從開始端插入數(shù)據(jù):push_front()。

此外deque也不支持與vector的capacity()、reserve()類似的操作。

 

  1. #include <iostream>  
  2. #include <deque>  
  3. using namespace std;  
  4. typedef deque<int> INTDEQUE;//有些人很討厭這種定義法,呵呵  
  5. //從前向后顯示deque隊列的全部元素  
  6. void put_deque(INTDEQUE deque, char *name)  
  7. {  
  8. INTDEQUE::iterator pdeque;//仍然使用迭代器輸出  
  9. cout << "The contents of " << name << " : ";  
  10. for(pdeque = deque.begin(); pdeque != deque.end(); pdeque++)  
  11. cout << *pdeque << " ";//注意有 "*"號哦,沒有"*"號的話會報錯  
  12. cout<<endl;  
  13. }  
  14. //測試deqtor容器的功能  
  15. int main()  
  16. {  
  17. //deq1對象初始為空  
  18. INTDEQUE deq1;   
  19. //deq2對象最初有10個值為6的元素   
  20. INTDEQUE deq2(10,6);   
  21. //聲明一個名為i的雙向迭代器變量  
  22. INTDEQUE::iterator i;  
  23. //從前向后顯示deq1中的數(shù)據(jù)  
  24. put_deque(deq1,"deq1");  
  25. //從前向后顯示deq2中的數(shù)據(jù)  
  26. put_deque(deq2,"deq2");  
  27. //從deq1序列后面添加兩個元素  
  28. deq1.push_back(2);  
  29. deq1.push_back(4);  
  30. cout<<"deq1.push_back(2) and deq1.push_back(4):"<<endl;  
  31. put_deque(deq1,"deq1");  
  32. //從deq1序列前面添加兩個元素  
  33. deq1.push_front(5);  
  34. deq1.push_front(7);  
  35. cout<<"deq1.push_front(5) and deq1.push_front(7):"<<endl;  
  36. put_deque(deq1,"deq1");  
  37. //在deq1序列中間插入數(shù)據(jù)  
  38. deq1.insert(deq1.begin()+1,3,9);  
  39. cout<<"deq1.insert(deq1.begin()+1,3,9):"<<endl;  
  40. put_deque(deq1,"deq1");  
  41. //測試引用類函數(shù)  
  42. cout<<"deq1.at(4)="<<deq1.at(4)<<endl;  
  43. cout<<"deq1[4]="<<deq1[4]<<endl;  
  44. deq1.at(1)=10;  
  45. deq1[2]=12;  
  46. cout<<"deq1.at(1)=10 and deq1[2]=12 :"<<endl;  
  47. put_deque(deq1,"deq1");  
  48. //從deq1序列的前后各移去一個元素  
  49. deq1.pop_front();  
  50. deq1.pop_back();  
  51. cout<<"deq1.pop_front() and deq1.pop_back():"<<endl;  
  52. put_deque(deq1,"deq1");  
  53. //清除deq1中的第2個元素  
  54. deq1.erase(deq1.begin()+1);  
  55. cout<<"deq1.erase(deq1.begin()+1):"<<endl;  
  56. put_deque(deq1,"deq1");  
  57. //對deq2賦值并顯示  
  58. deq2.assign(8,1);  
  59. cout<<"deq2.assign(8,1):"<<endl;  
  60. put_deque(deq2,"deq2");  

上面我們演示了deque如何進行插入刪除等操作,像erase(),assign()是大多數(shù)容器都有的操作。關(guān)于deque的其他操作請參閱其書籍。

表(List容器類)

List(#include<list>)又叫鏈表,是一種雙線性列表,只能順序訪問(從前向后或者從后向前),圖2是list的數(shù)據(jù)組織形式。與前面兩種容器類有一個明顯的區(qū)別就是:它不支持隨機訪問。要訪問表中某個下標(biāo)處的項需要從表頭或表尾處(接近該下標(biāo)的一端)開始循環(huán)。而且缺少下標(biāo)預(yù)算符:operator[]。

同時,list仍然包涵了erase(),begin(),end(),insert(),push_back(),push_front()這些基本函數(shù),下面我們來演示一下list的其他函數(shù)功能。

  • merge():合并兩個排序列表;
  • splice():拼接兩個列表;
  • sort():列表的排序

 

  1. #include <iostream>  
  2. #include <string>  
  3. #include <list>  
  4. using namespace std;  
  5. void PrintIt(list<int> n)  
  6. {  
  7. for(list<int>::iterator iter=n.begin(); iter!=n.end(); ++iter)  
  8. cout<<*iter<<" ";//用迭代器進行輸出循環(huán)   
  9. }  
  10. int main()  
  11. {  
  12. list<int> listn1,listn2; //給listn1,listn2初始化   
  13. listn1.push_back(123);  
  14. listn1.push_back(0);  
  15. listn1.push_back(34);  
  16. listn1.push_back(1123); //now listn1:123,0,34,1123   
  17. listn2.push_back(100);  
  18. listn2.push_back(12); //now listn2:12,100  
  19. listn1.sort();  
  20. listn2.sort(); //給listn1和listn2排序  
  21. //now listn1:0,34,123,1123 listn2:12,100   
  22. PrintIt(listn1);  
  23. cout<<endl;  
  24. PrintIt(listn2);  
  25. listn1.merge(listn2); //合并兩個排序列表后,listn1:0,12,34,100,123,1123   
  26. cout<<endl;  
  27. PrintIt(listn1);  

上面并沒有演示splice()函數(shù)的用法,這是一個拗口的函數(shù)。用起來有點麻煩。圖3所示是splice函數(shù)的功能。將一個列表插入到另一個列表當(dāng)中。list容器類定義了splice()函數(shù)的3個版本:

 

  1. splice(position,list_value);  
  2. splice(position,list_value,ptr);  
  3. splice(position,list_value,first,last); 

 

ist_value是一個已存在的列表,它將被插入到源列表中,position是一個迭代參數(shù),他當(dāng)前指向的是要進行拼接的列表中的特定位置。

listn1:123,0,34,1123 listn2:12,100

執(zhí)行l(wèi)istn1.splice(find(listn1.begin(),listn1.end(),0),listn2);之后,listn1將變?yōu)椋?23,12,100,34,1123。即把listn2插入到listn1的0這個元素之前。其中,find()函數(shù)找到0這個元素在listn1中的位置。值得注意的是,在執(zhí)行splice之后,list_value將不復(fù)存在了。這個例子中是listn2將不再存在。

第二個版本當(dāng)中的ptr是一個迭代器參數(shù),執(zhí)行的結(jié)果是把ptr所指向的值直接插入到position當(dāng)前指向的位置之前.這將只向源列表中插入一個元素。

第三個版本的first和last也是迭代器參數(shù),并不等于list_value.begin(),list_value.end()。First指的是要插入的列的第一個元素,last指的是要插入的列的最后一個元素。

如果listn1:123,0,34,1123 listn2:12,43,87,100 執(zhí)行完以下函數(shù)之后

listn1.splice(find(listn1.begin(),listn1.end(),0),++listn2.begin(),--listn2.end());

listn1:123,43,87,0,34,1123 listn2:12,100

以上,我們學(xué)習(xí)了deque,list兩種基本順序容器,其他的順序容器還有:slist,bit_vector等等。請繼續(xù)下一篇>>

責(zé)任編輯:于鐵 來源: 互聯(lián)網(wǎng)
相關(guān)推薦

2011-07-13 15:07:48

STLC++

2011-07-13 14:49:31

STLC++

2021-07-27 10:52:27

iOS WKWebView容器

2012-02-22 14:14:43

Java

2023-12-10 22:00:47

STLC++編程

2010-01-06 16:25:58

.Net Framew

2024-05-29 08:49:45

2011-04-21 16:43:54

BlockingQue

2020-08-11 08:59:20

容器虛擬化技術(shù)

2020-03-04 09:56:56

網(wǎng)絡(luò)安全云原生容器

2019-12-12 10:58:37

Docker容器引擎

2019-07-11 15:25:02

架構(gòu)運維技術(shù)

2022-05-30 09:32:07

Spring容器

2017-11-28 09:21:53

LinuxWindowsDocker

2018-11-30 09:06:40

AWSAzureGoogle

2011-06-24 14:17:58

Qt 容器類 QVector

2020-10-19 09:32:49

容器Docker管理

2020-10-26 15:11:50

Docker容器IT

2022-07-04 11:39:21

并發(fā)容器同步容器機制

2023-01-06 08:04:10

GPU容器虛擬化
點贊
收藏

51CTO技術(shù)棧公眾號

嫩草嫩草嫩草| 国产精品资源| 久久国产这里只有精品| 久久av影院| 亚洲成精国产精品女| 青青草原成人| 永久免费精品视频| 日韩欧美中文字幕公布| 一级毛片免费在线| 91视频你懂的| 久久久亚洲综合网站| 免费精品一区| 一个色综合导航| 国产精品免费视频久久久| 色综合视频一区二区三区44| 精品欧美一区二区三区精品久久| eeuss在线观看| 中文欧美字幕免费| 青春草国产视频| 免费日韩av| 成人高清视频观看www| 亚洲视频国产精品| 欧美精品免费在线观看| 99精品国自产在线| 北条麻妃99精品青青久久| 亚洲精品国产精品国产| 亚洲精品一区二区三区在线观看| 亚洲七七久久综合桃花剧情介绍| 91精品免费在线观看| 极品美乳网红视频免费在线观看 | 欧美在线999| 精品久久久久一区二区三区| 欧美性猛交xxxx乱大交蜜桃| 阿v免费在线观看| 日韩亚洲欧美在线| 欧美亚洲综合视频| 欧美在线一区二区视频| 水蜜桃精品av一区二区| 精品蜜桃一区二区三区| 国内精品久久久久影院色 | 成人午夜私人影院| 亚洲一二三区av| 午夜精品免费在线| 激情国产在线| 欧美激情女人20p| 国产在线观看91一区二区三区| 精选一区二区三区四区五区| 成人一区二区三区视频| 777免费视频| 日韩成人在线免费观看| 三级精品视频| 在线观看国产一区| 亚洲欧美激情小说另类| 动漫一区二区| 国产精品99蜜臀久久不卡二区| 精品一区二区av| 亚洲校园欧美国产另类| 亚洲男人天堂视频| 国内精品99| 国产一伦一伦一伦| 日韩一区二区三区电影在线观看| 亚洲欧洲av| 久久久久久久久久网| 在线播放91灌醉迷j高跟美女 | 欧美日韩国产高清一区| 成人午夜网址| 大陆av在线播放| 亚洲精品狠狠操| 国产精品hd| 国产一区视频导航| 在线免费看黄av| 68精品久久久久久欧美| 美洲天堂一区二卡三卡四卡视频| a视频在线看| 国产精品自拍视频| 久久精品视频在线看| 国产成人精品一区二三区在线观看 | 亚洲午夜精品网| 风间由美性色一区二区三区四区| 中文字幕人成一区| 亚洲第一区中文字幕| 免费精品视频| 欧美猛烈性xbxbxbxb| 亚洲 国产 欧美一区| 欧美大片在线观看| 国产精品一区二区在线看| 欧美xxxxhdvideosex| 欧美三级电影在线播放| 精品区一区二区| 懂色av中文字幕一区二区三区| 涩涩av在线| 九色在线91| 国产成人看片| 精品国产a毛片| 91在线高清观看| 欧美伦理在线视频| 免费网站成人| 9色porny| 欧美一区二区.| 欧美一级黄色录像| 国产欧美一区二区精品婷婷| 亚洲人成精品久久久| 95在线视频| 少妇性饥渴无码a区免费| 国产主播精品在线| 亚洲成人av中文字幕| 中文字幕日本不卡| 亚洲三级色网| 成人在线视频你懂的| 国产精品无码2021在线观看| 成人污网站在线观看| 国产精品看片资源| 在线午夜精品自拍| 欧美日韩免费区域视频在线观看| 久久99精品国产| 神马香蕉久久| 成人影院大全| 黄色av免费在线观看| 91n.com在线观看| 在线电影看在线一区二区三区| 国产精品视频免费在线| 中文字幕精品网| 精品国产一区a| 精品视频一区三区九区| 国产精品美女一区二区在线观看| 手机在线免费观看毛片| 欧美成人精品在线视频| 欧美一区二区三区在线| 黑人巨大精品欧美一区二区免费| av激情亚洲男人天堂| 韩国女主播成人在线| 国内精品亚洲| 成人毛片免费看| 日韩aaaa| 欧美残忍xxxx极端| 日韩动漫一区| 日本国产精品| 美国成人xxx| 日韩中文在线电影| 成人午夜国产| 国产欧美日韩影院| 九热爱视频精品视频| 欧美日韩一区二区三区在线电影 | 婷婷国产在线| 中文字幕在线视频不卡| 青青草av免费在线观看| 久久视频www| 青春草在线免费视频| 最爽无遮挡行房视频在线| 免费高潮视频95在线观看网站| 三区四区在线视频| aa视频在线观看| 在线观看爽视频| 亚洲美女色播| 精品国产一区探花在线观看| 国产精品国产一区| 日韩精品每日更新| 26uuu亚洲| 色www精品视频在线观看| 欧美一级黄色大片| 久久国产精品偷| 99久久99久久| 大地资源第二页在线观看高清版| 午夜亚洲福利老司机| 国产亚洲精品7777| 色综合视频一区二区三区高清| 精品人伦一区二区色婷婷| 欧美日韩第一视频| 91视频99| 黄色三级视频在线| а天堂8中文最新版在线官网| 不卡福利视频| 91精品国产麻豆国产在线观看| 久久久久国产精品午夜一区| 久久精品人人做人人爽人人| 亚洲午夜久久久久久久久电影院 | 色偷偷亚洲第一综合| 成人图片小说| а√天堂8资源在线| 成人影院天天5g天天爽无毒影院| 免费精品视频在线| 国产精品成人免费| 亚洲第一区第二区| 国产精品爽爽爽| 91视频最新入口| 顶级网黄在线播放| 亚洲春色h网| 99久久精品国产导航| 欧美v日韩v国产v| 精品国产乱码久久久久久久软件 | 午夜欧美一区二区三区在线播放| 亚洲欧美中文另类| 亚洲专区国产精品| www.男人的天堂| 深夜日韩欧美| 国产精品夜夜嗨| 精品国产sm最大网站免费看| 亚洲永久在线观看| 国产精品一区在线看| 久久精品高清|