C++(STL):16---deque之常規用法

deque 是 double-ended queue 的縮寫,又稱雙端隊列容器。

前面章節中,我們已經系統學習了 vector 容器,值得一提的是,deque 容器和 vecotr 容器有很多相似之處,比如:

  • deque 容器也擅長在序列尾部添加或刪除元素(時間復雜度為O(1)),而不擅長在序列中間添加或刪除元素。

  • deque 容器也可以根據需要修改自身的容量和大小。


和 vector 不同的是,deque 還擅長在序列頭部添加或刪除元素,所耗費的時間復雜度也為常數階O(1)。并且更重要的一點是,deque 容器中存儲元素并不能保證所有元素都存儲到連續的內存空間中。

當需要向序列兩端頻繁的添加或刪除元素時,應首選 deque 容器。

deque 容器以模板類 deque<T>(T 為存儲元素的類型)的形式在 <deque> 頭文件中,并位于 std 命名空間中。因此,在使用該容器之前,代碼中需要包含下面兩行代碼:

#include <deque>
using namespace std;

注意,std 命名空間也可以在使用 deque 容器時額外注明,兩種方式都可以。

創建deque容器的幾種方式

創建 deque 容器,根據不同的實際場景,可選擇使用如下幾種方式。

1) 創建一個沒

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

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

相關文章

C++(STL):22 ---序列式容器queue使用

queue是隊列,特點是先進先出,后進后出,你可以理解為數據結構里的隊列模型,他只允許你訪問 queue<T> 容器適配器的第一個和最后一個元素。只能在容器的末尾添加新元素,只能從頭部移除元素。許多程序都使用了 queue 容器。queue 容器可以用來表示超市的結賬隊列或服務…

C++(STL):23 ---序列式容器queue源碼剖析

一、queue概述 queue是一種先進先出(First In First Out,FIFO)的數據結構。它有兩個出口,形式如下圖所示特點:queue允許新增元素、移除元素、從最底端加入元素、取得最頂端元素但除了最底端可以加入、最頂端可以取出外,沒有任何其他方法可以存取queue的其他元素。換言之q…

leetcode374. 猜數字大小

我們正在玩一個猜數字游戲。 游戲規則如下&#xff1a; 我從 1 到 n 選擇一個數字。 你需要猜我選擇了哪個數字。 每次你猜錯了&#xff0c;我會告訴你這個數字是大了還是小了。 你調用一個預先定義好的接口 guess(int num)&#xff0c;它會返回 3 個可能的結果&#xff08;-1&…

C++(STL):24 ---序列式容器stack用法

1.stack的定義 要使用stack,應先添加頭文件#include <stack>, 并在頭文件下面加上 "using namespace std" //定義 stack< typename > name;2. stack容器內元素的訪問 由于棧(stack)本書就是一種后進先出的數據結構,在STL的stack中只能 通過top()來訪問…

C++(STL):25 ---序列式容器stack源碼剖析

一、stack概述 stack是一種先進后出(First In Last Out,FILO)的數據結構。它只有一個出口, 形式如下圖所示特點:stack允許新增元素、移除元素、取得最頂端元素。但除了最頂端外,沒有任何其他方法可以存取stack的其他元素。換言之stack不允許有遍歷行為將元素推入stack的動…

php-protobuf擴展和代碼生成工具使用

https://github.com/protocolbuffers/protobuf/releases/tag/v3.5.1 下載選擇 https://github.com/protocolbuffers/protobuf/releases/download/v3.5.1/protobuf-php-3.5.1.zip yum install autoconf automake libtool tar -zxvf protobuf-php-3.5.1.tar.gz cd protobuf-3.…

geoip環境配置

1.下載geoip的php擴展庫 wget http://pecl.php.net/get/geoip-1.1.1.tgz tar zxvf geoip-1.1.1.tgz cd geoip-1.1.1 phpize ./configure --with-php-config=/usr/bin/php-config --with-geoip make &make install 2.配置php支持geoip擴展 [root]# ll /usr/lib64/php/modul…

leetcode259. 較小的三數之和

給定一個長度為 n 的整數數組和一個目標值 target&#xff0c;尋找能夠使條件 nums[i] nums[j] nums[k] < target 成立的三元組 i, j, k 個數&#xff08;0 < i < j < k < n&#xff09;。 示例&#xff1a; 輸入: nums [-2,0,1,3], target 2 輸出: 2 解…

Struts2和Spring和Hibernate應用實例

Struts2、Spring和Hibernate應用實例Struts作為MVC 2的Web框架&#xff0c;自推出以來不斷受到開發者的追捧&#xff0c;得到廣泛的應用。作為最成功的Web框架&#xff0c;Struts自然擁有眾多的優點&#xff1a;MVC 2模型的使用、功能齊全的標志庫&#xff08;Tag Library&…

C++(STL):31 ---關聯式容器map源碼剖析

map的特性 所有元素都會根據元素的鍵值自動被排序map中的pair結構 map的所有元素類型都是pair,同時擁有實值(value)和鍵值(key)pair的第一個元素視為鍵值,第二個元素視為實值map不允許兩個元素擁有相同的鍵值下面是stl_pair.h中pair的定義://代碼摘錄與stl_pair.htempla…

leetcode360. 有序轉化數組

給你一個已經 排好序 的整數數組 nums 和整數 a、b、c。對于數組中的每一個數 x&#xff0c;計算函數值 f(x) ax2 bx c&#xff0c;請將函數值產生的數組返回。 要注意&#xff0c;返回的這個數組必須按照 升序排列&#xff0c;并且我們所期望的解法時間復雜度為 O(n)。 示…

C++(STL):27 ---關聯式容器set源碼剖析

一、set set語法使用參閱:set的特性 set所有元素都會根據元素的鍵值自動被排序set中的鍵值就是實值,實值就是鍵值默認情況下set不允許兩個元素重復set的迭代器 不能根據set的迭代器改變set元素的值。因為其鍵值就是實值,實值就是鍵值,如果改變set元素值,會嚴重破壞set組織…

C++(STL):28 ---關聯式容器map用法

作為關聯式容器的一種,map 容器存儲的都是 pair 對象,也就是用 pair 類模板創建的鍵值對。其中,各個鍵值對的鍵和值可以是任意數據類型,包括 C++ 基本數據類型(int、double 等)、使用結構體或類自定義的類型。 通常情況下,map 容器中存儲的各個鍵值對都選用 string 字符…

C++(STL):26 ---關聯式容器set用法

set容器都會自行根據鍵的大小對存儲的鍵值對進行排序, 只不過 set 容器中各鍵值對的鍵 key 和值 value 是相等的,根據 key 排序,也就等價為根據 value 排序。 另外,使用 set 容器存儲的各個元素的值必須各不相同。更重要的是,從語法上講 set 容器并沒有強制對存儲元素的類…

leetcode387. 字符串中的第一個唯一字符

給定一個字符串&#xff0c;找到它的第一個不重復的字符&#xff0c;并返回它的索引。如果不存在&#xff0c;則返回 -1。 案例: s "leetcode" 返回 0. s "loveleetcode", 返回 2. 注意事項&#xff1a;您可以假定該字符串只包含小寫字母。 思路&…

C++(STL):30 ---關聯式容器map的operator[]和insert效率對比

通過前面的學習我們知道,map 容器模板類中提供有 operator[ ] 和 insert() 這 2 個成員方法,而值得一提的是,這 2 個方法具有相同的功能,它們既可以實現向 map 容器中添加新的鍵值對元素,也可以實現更新(修改)map 容器已存儲鍵值對的值。舉個例子(程序一): #include …

C++(STL):29 ---關聯式容器map 迭代器

無論是前面學習的序列式容器,還是關聯式容器,要想實現遍歷操作,就必須要用到該類型容器的迭代器。當然,map 容器也不例外。C++ STL 標準庫為 map 容器配備的是雙向迭代器(bidirectional iterator)。這意味著,map 容器迭代器只能進行 ++p、p++、--p、p--、*p 操作,并且迭…

C++(STL):35---multimap容器

在掌握 C++ STL map 容器的基礎上,本節再講一個和 map 相似的關聯式容器,即 multimap 容器。所謂“相似”,指的是 multimap 容器具有和 map 相同的特性,即 multimap 容器也用于存儲 pair<const K, T> 類型的鍵值對(其中 K 表示鍵的類型,T 表示值的類型),其中各個…

在Spring + Hibernate中使用二級緩存配置步驟

在SSH中用二級緩存大概分以下幾步&#xff1a; 1、首先在hbm文件里對涉及到的對象設置緩存方式&#xff0c;或根據情況設置自己需要的 2、在ehcache的配置文件里配置一個cache&#xff0c;name為這個類名 3、在applicationContext.xml的hibernate配置里 hibernate.cache.use_q…

C++(STL):34--- multiset容器詳解

前面章節中,對 set 容器做了詳細的講解。回憶一下,set 容器具有以下幾個特性: 不再以鍵值對的方式存儲數據,因為 set 容器專門用于存儲鍵和值相等的鍵值對,因此該容器中真正存儲的是各個鍵值對的值(value);set 容器在存儲數據時,會根據各元素值的大小對存儲的元素進行…