第十一篇:(順序)容器的好伴侶 --- 容器適配器

前言

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

什么是容器適配器?

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

容器適配器怎么用?

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

 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提供的函數處理數據
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. 容器適配器的函數實現其實也是基于其參數容器的函數,而不是自己重新定義的。

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/282932.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/282932.shtml
英文地址,請注明出處:http://en.pswp.cn/news/282932.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

第一季度ADC市場份額揭榜 A10 Networks再獲用戶青睞

近日&#xff0c;根據全球知名咨詢公司IDC 發布的2018年第一季度中國ADC市場分析報告顯示&#xff0c;A10 Networks 穩占中國ADC市場份額第二名。數據來源&#xff1a;IDC 2018年Q1 ADC市場報告 從廠商排名來看依次為 F5 30%, A10Networks 12%, DPtech 12% ,Sangfor 9% &#…

zblog php 標題優化,Zblog分類頁標題重復的優化 - 張力博客

今天瘋子無聊上自己博客看看&#xff0c;點了幾個頁面就發現一個問題。我博客分類頁的標題怎么第一頁和后面的頁數都是一樣的&#xff0c;這一點相信大家都知道對于SEO優化是很不好的一點。我也看了同樣的一些個人zblog博客也存在這樣的問題。于是我在網上就找了關于修改zblog分…

利用linux shell自己主動頂貼

在論壇上面發帖問個什么東西的話&#xff0c;一旦不頂。帖子就秒沉了&#xff0c;可是又實在不想每時每刻都去頂&#xff0c;怎么辦&#xff1f;以下展示了怎樣利用shell 的crontab實現自己主動頂貼。 閑話不多說了&#xff0c;以豆瓣為例—– 1&#xff1a; 用chrome打開豆瓣…

Linux命令之telnet 命令

介紹 Telnet是常用的遠程控制Web服務器的方法 Telnet協議是TCP/IP協議族中的一員&#xff0c;是Internet遠程登陸服務的標準協議和主要方式。它為用戶提供了在本地計算機上完成遠程主機工作的能力。在終端使用者的電腦上使用telnet程序&#xff0c;用它連接到服務器。終端使用者…

深度學習庫 SynapseML for .NET 發布0.1 版本

2021年11月 微軟開源一款簡單的、多語言的、大規模并行的機器學習庫 SynapseML&#xff08;以前稱為 MMLSpark&#xff09;&#xff0c;以幫助開發人員簡化機器學習管道的創建。具體參見[1]微軟深度學習庫 SynapseML&#xff1a;可直接在系統中嵌入 45 種不同機器學習服務、支持…

Buildroot stress-ng Linux系統壓力測試

/*********************************************************************** Buildroot stress-ng Linux系統壓力測試* 說明&#xff1a;* 之前有使用lmbench對整板進行一些測試&#xff0c;如果相對某一部分專門進行測試&#xff0c;* 就可以參考使用stree-ng…

支持回調處理 php函數,PHP支持回調的函數有哪些?

PHP支持回調的函數有&#xff1a;1、匿名函數&#xff0c;代碼為【$server->on Request】&#xff1b;2、類靜態方法&#xff0c;代碼為【static function test $req】&#xff1b;3、函數&#xff0c;代碼為【my_onRequest $req】。PHP支持回調的函數有&#xff1a;1、匿名…

病毒木馬查殺實戰第019篇:病毒特征碼查殺之編程實現

前言上次我們已經簡介過了病毒特征碼提取的基本方法&#xff0c;那么這次我們就通過編程來實現對于病毒的特征碼查殺。定義特征碼存儲結構為了簡單起見。這次我們使用的是setup.exe以及unpacked.exe這兩個病毒樣本。經過上次的分析&#xff0c;我們對setup.exe樣本的特征碼提取…

《ASP.NET Core 6框架揭秘》實例演示[22]:如何承載你的后臺服務[補充]

借助 .NET提供的服務承載&#xff08;Hosting&#xff09;系統&#xff0c;我們可以將一個或者多個長時間運行的后臺服務寄宿或者承載我們創建的應用中。任何需要在后臺長時間運行的操作都可以定義成標準化的服務并利用該系統來承載&#xff0c;ASP.NET Core應用最終也體現為這…

命令行打印文件樹列表: tree

Linux & Mac 1.下載tree lib //mac brew install tree //centos yum install tree //ubuntu apt-get install tree 用法 //顯示所有文件 tree //顯示深度2層 tree -L 2 2. 命令find組合 find . -print | sed -e s;[^/]*/;|____;g;s;____|; |;g > structure.txt 移除node…

java 二分法查找數組,Java二分法查找數組元素下標

package pers.ly.javase.algorithm;import java.util.Arrays;/*** 二分法查找* author: Lu Yang* date: 2019-01-23 10:50:37**/public class BinarySearch {public static void main(String[] args) {Integer[] arr {10,50,30,40,10,80,90,70,60,40,100,10};// 數組排序 ->…

ASP.NET Core MVC壓縮樣式、腳本及總是復制文件到輸出目錄

前言 在.NET Core之前對于壓縮樣式文件和腳本我們可能需要借助第三方工具來進行壓縮&#xff0c;但在ASP.NET MVC Core中則無需借助第三方工具來完成&#xff0c;本節我們來看看ASP.NET Core MVC為我們提供了哪些方便。 自動壓縮樣式和腳本 當我們在測試環境中肯定不需要壓縮腳…

京東訂單自動評價方法

剛剛完成的一個京東自動訂單腳本, 以后還要加入其它京東自動的腳本項目地址: https://github.com/mm333444/aox_jd_auto_script 京東自動完成腳本 目前只完成京東訂單自動評價, 評價時會自動上傳商品圖片 一、安裝 1. 程序依賴 python3.52. 安裝配置 安裝pipenv安裝模塊 pipenv…

matlab空間散點擬合曲線,matlab離散點擬合曲線

matlab曲線擬合與數值點標注實例_工程科技_專業資料。實例 1: 現已知兩組...Matlab教程 曲線擬合工具箱 數學科學與技術學院 胡金燕 lionfr 曲線擬合定義 在實際工程應用和科學實踐中,經常需要尋求 兩個(或多個)變量間的關系,而......(p,x); %獲得x點處對相應的y值 plot(x,y,r*…

redis下并發問題解決方案

http://effective.blog.51cto.com/8296150/1671743 現在的計算機大都是多核的cpu,意味著可以并行執行多個進程.如果這多個運行的進程對同一份數據進行讀寫操作,那么就有可能出現兩個或者多個進程讀到的都是老的數據,這種情況下,再進行寫入操作之后就會有一些進程寫入的數據被覆…

宜建立自主可控的車用芯片和操作系統技術體系

萬物互聯時代&#xff0c;操作系統的邊界在不斷突破&#xff0c;面向“人機物”融合的泛在計算場景&#xff0c;能夠支撐分布式人機物協同應用的操作系統將是產業未來之光。操作系統在經過主機時代、PC互聯時代、移動互聯時代之后&#xff0c;來到萬物互聯時代&#xff0c;這恰…

Java 9進入第一輪問題修復階段

Java 9功能特性正式完成&#xff0c;這意味著第一個問題修復階段已經開始。HTTP/2客戶端沒有在截止日期前完成&#xff0c;現已降級為孵化器功能。由于現在的目標是在7月準備好可發布的Java 9&#xff0c;所以目前不太可能添加任何新的JEP。\\InfoQ此前的報道中提到&#xff0c…

django 用戶管理(1)

編輯了前端的頁面展示&#xff0c;用的bootstrap 用戶登錄 用戶信息 用戶編輯 創建用戶 修改密碼 轉載于:https://blog.51cto.com/jacksoner/2133129

qiaoye.php,全自動無限生成關鍵詞頁面(黑帽SEO優化終極方法)

如果你是做黑帽SEO的&#xff0c;如果你還停留在用欄目、租域名、劫持等手段來做黑帽SEO優化&#xff0c;我可以肯定的告訴你&#xff0c;你做的再好&#xff0c;也賺不了多少。那么今天咱們要說的就是無限生成關鍵詞頁面用內容頁來做黑帽SEO優化。這是我在演示的時候做的一個站…

AR Software

... 轉載于:https://www.cnblogs.com/2008nmj/p/7264769.html