日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

第十一篇:(顺序)容器的好伴侣 --- 容器适配器

發(fā)布時間:2023/12/9 编程问答 37 豆豆
生活随笔 收集整理的這篇文章主要介紹了 第十一篇:(顺序)容器的好伴侣 --- 容器适配器 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

前言

? ? ? ?vector容器的數(shù)據(jù)結構原型是順序表,它很好的實現(xiàn)了順序表的功能,大大方便了編程。好了,現(xiàn)在假設有天我又想用棧,那么有沒有棧對應的容器呢?很遺憾,木有。但基于“棧”可以由順序表或者鏈表實現(xiàn)這一特性,C++提供了stack給我們使用,來解決棧的實現(xiàn)這個問題。stack可不是類,也不是容器,那它是什么呢?它就是本文要討論的一個新的類型 --- 容器適配器

什么是容器適配器?

? ? ? ?容器適配器是對容器的一種再封裝。不同的容器適配器提供不同的函數(shù),使容器的功能得到全新的特定的擴展。(但它和容器的容器是有區(qū)別的:容器適配器不支持迭代器和算法,使用起來限制比較大)。標準庫提供了三種容器適配器:queue,stack和priority_queue。

容器適配器怎么用?

? ? ? ?一般來說,先定義一個容器,接著給該容器配備相應的容器適配器,然后就可以使用該容器適配器特有的函數(shù)處理數(shù)據(jù)了。這里可以省略掉容器定義那一步,容器適配器將自動分配容器。下面這個代碼示范了棧容器適配器stack的用法。我們先定義一個vector容器,接著給該vector容器分配stack容器適配器,然后使用棧容器提供的函數(shù)自頂向下的輸出所有元素,解決了前言所提出的問題:

1 #include <iostream> 2 #include <vector> 3 // 使用容器適配器必須包含相應的頭文件 4 #include <stack> 5 6 using namespace std; 7 8 int main() 9 { 10 vector<int> v; 11 12 /* 13 * 將0-9存入vector容器并打印 14 */ 15 for (int i=0; i<10; i++) 16 v.push_back(i); 17 cout << "輸出Vector容器:" << endl; 18 for (vector<int>::iterator it = v.begin(); it != v.end(); it++) 19 cout << *it << " "; 20 cout << endl << endl; 21 22 // 給容器v配上容器適配器 23 stack< int, vector<int> > s(v); 24 /* 25 * 使用棧容器適配器stack提供的函數(shù)處理數(shù)據(jù) 26 */ 27 cout << "自頂向下輸出棧( stack容器適配器 ):" << endl; 28 while (!s.empty()) { 29 cout << s.top() << " "; 30 s.pop(); 31 } 32 cout << endl; 33 34 return 0; 35 }

? ? ? ?運行結果:

  

說明

? ? ? ?1. 容器適配器只適用于一定的容器而不是所有容器。

? ? ? ?2. 容器適配器的函數(shù)實現(xiàn)其實也是基于其參數(shù)容器的函數(shù),而不是自己重新定義的。

總結

以上是生活随笔為你收集整理的第十一篇:(顺序)容器的好伴侣 --- 容器适配器的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。