c++ STL deque容器成員函數

deque是雙向隊列,即可以在頭部插入刪除,也可以在尾部插入刪除。內部并不連續,這一點和vector并不一樣。可能第1個元素和第2個元素的地址是不連在一起的。在使用時用it迭代器會安全一點。

這是c++ 98標準的,不是c++11的。11標準新加的函數沒在這里說明。里面大部分函數是經過測試的才得出的結論。

函數(下面將iterator簡化為it)

描述

Void?c.assign(it?beg,it?end)
void?c.assign(it?n,元素類型??elem)?

將拷貝[beg;?end)區間中的數據用覆蓋式地賦值給c2個參數是不包含元素的。
nelem的賦值給c

這兩個函數均會將原來的容器清空再賦值。Iteratorc相同的容器類型。

it?c.at(int?idx)?

傳回索引idx所指的數據,idx0開始,如果idx越界,拋出out_of_range

reference?c.back()?

傳回最后一個數據,不檢查這個數據是否存在。只傳不刪。注意返回值與begin不同。

it?c.begin()?

傳回迭代器中的第一個數據地址。返回的是第1個數據的地址,即iterator

Void?c.clear()?

移除容器中所有數據,被清空了,再訪問里面的數據會出錯。

Void?c.empty()?

判斷容器是否為空。返回值為bool型。若空則返true,若非空返false

it?c.end()?

指向迭代器中的最后一個數據的下一個數據的地址,該地址是沒有元素的,與begin搭配的。若容器為空,返回與begin同樣地址。

It?c.erase(it?pos)
it?c.erase(it?beg,it?end)?

刪除pos位置的數據,傳回下一個數據的位置。
刪除[beg,end)區間的數據,傳回下一個數據的位置。2個參數是最后一個元素的首地址,即該地址是有元素的。

Reference?c.front()?

傳回容器中第一個數據,不檢查這個數據是否存在。只傳不刪。

c.get_allocator()

使用構造函數返回一個拷貝。//此函數暫不知道怎么用,windows下不太一樣。原型allocator_type?get_allocator()?const;

It?c.insert(it?pos,元素類型?elem)?
void?c.insert(it?pos,int?n,元素類型?elem)
void?c.insert(it?pos,it?beg,it?end)

pos位置插入一個elem元素拷貝,傳回新數據位置。邏輯上pos處的元素就往后移了。
pos位置插入nelem元素。
pos位置插入在[beg,end)區間的數據,這些數據也是屬于容器中的。end沒有實際元素。

Int?c.max_size()?

返回容器中可容納多少個元素。不同類型的deque,可容納數量不同。

Void?c.pop_back()?

刪除最后一個數據。

Void?c.pop_front()?

刪除頭部數據。

Void?c.push_back(元素類型?elem)?

在尾部加入一個數據。

Void?c.push_front(元素類型?elem)?

在頭部插入一個數據。

It?c.rbegin()?

傳回一個逆向隊列的第一個數據的地址。使用這兩個可以逆向輸出。

It?c.rend()?

傳回一個逆向隊列的最后一個數據的下一個位置的地址。

Void?c.resize(int?num,可選的默認值)?

重新指定隊列的元素數量為num個。2種情況:1.num比存在的元素個數要少,則刪除尾部的元素以調整個數。2.num比實際存在的元素要多,則在實際元素之后填充默認值以調整個數。(第2個元素為可選,若沒有則默認為該類型的默認值)

Int?c.size()?

返回容器中目前存放了多少個元素。(這個和max_size不同)

Void?c1.swap(deuqe?c2)?
void?swap(deque?c1,deque?c2)

c1c2中的元素互換,c1c2都是同一類型的deque
作用同上,這個可以直接用。

deque<Elem>?c
deque<Elem>?c1(deque?c2)
Deque<Elem>?c(int?n)
Deque<Elem>?c(int?n,?類型?elem)
Deque<Elem>?c(it?beg,it?end)
c.~deque<Elem>()?

創建一個空的dequeElem可以為intchar等等很多種類型。
c2初始化為c1,相當于復制出一個隊列副本
創建一個deque,含有n個數據,數據均由缺省值在創建時初始化。
創建一個含有nelem拷貝的deque
創建一個以[beg;end)區間的deque
銷毀所有數據,釋放內存,但是c還可以繼續使用,只不過包含的元素個數為0

?

轉載于:https://www.cnblogs.com/xcw0754/p/4263488.html

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

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

相關文章

sqlserver中判斷表或臨時表是否存在

轉自&#xff1a;http://www.cnblogs.com/yugen/archive/2010/07/25/1784749.html 1、判斷數據表是否存在 方法一&#xff1a; use yourdb;go if object_id(Ntablename,NU) is not nullprint 存在else print 不存在 例如&#xff1a;use fireweb;go if object_id(NTEMP_TBL,NU)…

Mysql數據庫正則表達式

1.基本字符的匹配 SELECT * FROM a1 WHERE name regexp 1000 #匹配名稱含有1000的所有行 SELECT * FROM a1 WHERE name regexp .000 #匹配以000結尾的所有行&#xff0c;(.正則中表示&#xff1a;匹配任意一個字符) 從中可以看到正則表達式能夠模擬LIKE使用通配符&#xff0c…

android項目 之 記事本(6)----- 加入手寫

想必大家都用過QQ的白板功能&#xff0c;里面主要有兩項&#xff0c;一個是涂鴉功能&#xff0c;事實上類似于上節的畫板功能&#xff0c;而還有一個就是手寫&#xff0c;那記事本怎么能沒有這個功能呢&#xff0c;今天就來為我們的記事本加入手寫功能。 先上圖&#xff0c;看看…

HTTP協議中常見請求方法以及一些常見錯誤代碼

GET&#xff1a; 請求指定的頁面信息&#xff0c;并返回實體主體。 HEAD&#xff1a; 只請求頁面的首部。 POST&#xff1a; 請求服務器接受所指定的文檔作為對所標識的URI的新的從屬實體。 PUT&#xff1a; 從客戶端向服務器傳送的數據取代指定的文檔的內容。 DELETE&#xff…

license文件生成原理

byte解密weblogic加密oraclehex現在很多J2EE應用都采用一個license文件來授權系統的使用&#xff0c;特別是在系統購買的早期&#xff0c;會提供有限制的license文件對系統進行限制&#xff0c;比如試用版有譬如IP、日期、最大用戶數量的限制等。 而license控制的方法又有很…

linux常用關機命令及其區別-Shutdown halt reboot init

1.shutdown shutdown命令安全地將系統關機。 shutdown 參數說明: [-t] 在改變到其它runlevel之前﹐告訴init多久以后關機。 [-r] 重啟計算器。 [-k] 并不真正關機﹐只是送警告信號給每位登錄者〔login〕。 [-h] 關機后關閉電源〔halt〕。 [-n] 不用init﹐而是自己來關機。不鼓…

CSS3動畫@keyframes中translate和scale混用出錯問題

在寫基于網頁的2048時&#xff0c;想讓一個元素出現時已經通過translate屬性固定在指定位置&#xff0c;同時顯示動畫scale(0)-->scale(1)&#xff0c;以實現放大出現效果。 CSS代碼為 -webkit-keyframes mymove_failed{0% {-webkit-transform:translate(50px,50px) scale…

metero學習

博客園首頁新隨筆聯系訂閱管理最新隨筆 最新評論 node.js相關的中文文檔及教程 (轉) Posted on 2013-08-30 10:40 小小清清 閱讀(61) 評論(0) 編輯 收藏 node.js api中英文對照: http://docs.cnodejs.net/cman/ node.js入門中文版: http://nodebeginner.org/index-zh-cn.html e…

Linux統計單個文件統計

語法&#xff1a;wc [選項] 文件… 說明&#xff1a;該命令統計給定文件中的字節數、字數、行數。如果沒有給出文件名&#xff0c;則從標準輸入讀取。wc同時也給出所有指定文件的總統計數。字是由空格字符區分開的最大字符串。 該命令各選項含義如下&#xff1a; - c 統計字節數…

jQuery慢慢啃之事件對象(十一)

1.event.currentTarget//在事件冒泡階段中的當前DOM元素 $("p").click(function(event) {alert( event.currentTarget this ); // true }); 2.event.data//當前執行的處理器被綁定的時候&#xff0c;包含可選的數據傳遞給jQuery.fn.bind。 $("a").ea…

Linuxcurl命令參數詳解

Linuxcurl是通過url語法在命令行下上傳或下載文件的工具軟件&#xff0c;它支持http,https,ftp,ftps,telnet等多種協議&#xff0c;常被用來抓取網頁和監控Web服務器狀態。1.linuxcurl抓取網頁&#xff1a;抓取百度&#xff1a;curlhttp://www.baidu.com如發現亂碼&#xff0c;…

android解析XML總結(SAX、Pull、Dom三種方式)

在android開發中&#xff0c;經常用到去解析xml文件&#xff0c;常見的解析xml的方式有一下三種&#xff1a;SAX、Pull、Dom解析方式。 今天解析的xml示例&#xff08;channels.xml&#xff09;如下&#xff1a; 1 <?xml version"1.0" encoding"utf-8"…

查看Eclipse中的jar包的源代碼:jd-gui.exe

前面搞了很久的使用JAD&#xff0c;各種下載插件&#xff0c;最后配置好了&#xff0c;還是不能用&#xff0c;不知道怎么回事&#xff0c; 想起一起用過的jd-gui.exe這個工具&#xff0c;是各種強大啊&#xff01;&#xff01;&#xff01; 只需要把jar包直接扔進去就可以了&a…

maven scope含義的說明

compile &#xff08;編譯范圍&#xff09; compile是默認的范圍&#xff1b;如果沒有提供一個范圍&#xff0c;那該依賴的范圍就是編譯范圍。編譯范圍依賴在所有的classpath 中可用&#xff0c;同時它們也會被打包。 provided &#xff08;已提供范圍&#xff09; provided 依…

此地址使用了一個通常用于網絡瀏覽以外的端口。出于安全原因,Firefox 取消了該請求...

FirFox打開80以外的端口&#xff0c;會彈出以下提示&#xff1a; “此地址使用了一個通常用于網絡瀏覽以外的端口。出于安全原因&#xff0c;Firefox 取消了該請求。”。 解決方法如下&#xff1a; 在Firefox地址欄輸入about:config,然后在右鍵新建一個字符串鍵network.securit…

Java操作shell腳本

public class Exec {private static ILogger logger LoggerFactory.getLogger(Exec.class);public Exec() {super();}/*** 執行命令&#xff08;如Shell腳本&#xff09;<br>* * param cmd 操作命令* param timeout 超時時間* return 命令執行過程輸出內容* * throws IO…

Mysql更新插入

在向表中插入數據的時候&#xff0c;經常遇到這樣的情況&#xff1a;1. 首先判斷數據是否存在&#xff1b; 2. 如果不存在&#xff0c;則插入&#xff1b;3.如果存在&#xff0c;則更新。 在 SQL Server 中可以這樣處理&#xff1a; if not exists (select 1 from t where id …

信息加密之信息摘要加密MD2、MD4、MD5

對于用戶數據的保密一直是各個互聯網企業頭疼的事&#xff0c;那如何防止用戶的個人信息泄露呢&#xff1f;今天為大家介紹一種最簡單的加密方式--信息摘要算法MD。它如何來保護用戶的個人信息呢&#xff1f;其實很簡單&#xff0c;當獲得到用戶的信息后&#xff0c;先對其進行…

Java 從網絡上下載文件

/*** 下載文件到本地 */public static void downloadPicture(String imageUrl, String filename){ URL url;try {url new URL(imageUrl);//打開網絡輸入流DataInputStream dis new DataInputStream(url.openStream());//建立一個新的文件FileOutputStream fos new FileOutp…

An error was encountered while running(Domain=LaunchSerivcesError, Code=0)

今天突然遇到這樣一個錯誤&#xff0c;編譯可以通過&#xff0c;但是運行就會彈出這個錯誤提示&#xff1a; An error was encountered while running(DomainLaunchSerivcesError, Code0) 解決辦法就是重置模擬器。 點擊模擬器菜單中的Reset Contents and Settings&#xff0c;…