在线观看www成人影院-在线观看www日本免费网站-在线观看www视频-在线观看操-欧美18在线-欧美1级

0
  • 聊天消息
  • 系統(tǒng)消息
  • 評論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會員中心
創(chuàng)作中心

完善資料讓更多小伙伴認識你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

c++值deque容器

嵌入式技術(shù) ? 來源:嵌入式技術(shù) ? 作者:嵌入式技術(shù) ? 2023-07-14 08:49 ? 次閱讀

1.deque容器介紹

deque 是 double-ended queue 的縮寫,又稱雙端隊列容器。deque容器支持從頭部和尾部雙端插入、刪除數(shù)據(jù)。與vector容器不同的是,vector容器是一段連續(xù)的空間,而deque沒有所謂容量的概念,因為它是動態(tài)的以分段連續(xù)空間組合而成,隨時可以增加一段新的空間并連接起來。不會像vector那樣,因為空間不足而擴容,復(fù)制元素到新的空間,再釋放舊的空間。因此deque沒有必要提供所謂的擴容(reserve)的功能。

wKgaomSwlVeABkc8AATxtQagCLQ587.png

deque容器可以看做是一個雙端數(shù)組,可以從頭或者尾之間插入數(shù)據(jù)。從頭插入或者刪除使用push_front和pop_front。從尾插入或刪除輸出使用push_backh和pop_back。從任意位置插入可以使用insert函數(shù)。

deque容器,在空間管理上是通過內(nèi)部中控器來實現(xiàn)的。中控器記錄每一個緩沖區(qū)的地址。緩沖區(qū)中存放真實的數(shù)據(jù)內(nèi)容。因而在deque容器中,數(shù)據(jù)空間是由多段空間組成的。

deque容器是沒有預(yù)留空間函數(shù)reserve和獲取容量大小函數(shù)capacity。

deque從頭端插入數(shù)據(jù)比vector容器快,而且數(shù)據(jù)量越大越明顯。

wKgZomSwljqAG_uXAARxbhSzBNw535.png

2.deque容器構(gòu)造函數(shù)

deque容器的構(gòu)造函數(shù)和vector類似,由無參構(gòu)造、有參構(gòu)造、拷貝構(gòu)造。

deque構(gòu)造函數(shù):
	deque() --無參構(gòu)造
	deque(begin,end);//有參構(gòu)造,將begin~end之間的數(shù)據(jù)拷貝
	deque(int count,elem);//count個elem數(shù)據(jù)
	deque(deque &p);//拷貝構(gòu)造

應(yīng)用示例:

#include 
using namespace std;
#include 
#include 
void PrintDeque(const deque& p)
{
	for (deque::const_iterator deq = p.begin(); deq != p.end(); deq++)
	{
		cout  deq;
	//插入數(shù)據(jù):尾插
	deq.push_back(1);
	deq.push_back(2);
	deq.push_back(3);
	//插入數(shù)據(jù):頭插
	deq.push_front(4);
	deq.push_front(5);
	deq.push_front(6);
	cout  deq2(deq.rbegin(), deq.rend());//區(qū)間賦值
	PrintDeque(deq2);
	deque deq3(3, 666);//賦值3個666
	PrintDeque(deq3);
	cout  deq4(deq);//拷貝構(gòu)造
	PrintDeque(deq4);
}
int main()
{
	test();
	system("pause");
}
wKgaomSwl_uAGNf4AAOosi5FoJY681.png

3.deque容器賦值

賦值方式可以直接使用“=”賦值,也可以通過函數(shù)assign實現(xiàn)。

deq賦值:
	重載"=":operator=();
	assign(begin,end);//區(qū)間賦值
	assign(int count,elem);//count個elem

使用示例:

include 
#include 
using namespace std;

void PrintDeque(const deque& p)
{
	for (deque::const_iterator deq = p.begin(); deq != p.end(); deq++)
	{
		cout  deq;
	//尾插
	deq.push_back(1);
	deq.push_back(2);
	deq.push_back(3);
	//頭插
	deq.push_front(4);
	deq.push_front(5);
	deq.push_front(6);
	cout  deq2 = deq;//之間賦值
	cout  deq3;
	deq3.assign(deq.begin(), deq.end());
	PrintDeque(deq3);

}
int main()
{
	test();
	system("pause");
}

wKgZomSwmHKAQmzVAAPbv3KEPss788.png

4.deque設(shè)置和獲取元素個數(shù)

判斷容器是否為空可以使用empty()函數(shù),設(shè)置元素個數(shù)可以使用resize()函數(shù),獲取元素個數(shù)使用size()函數(shù)。


deque容器獲取大小:
	判斷容器是否為空:empty()  ---為空返回true
	獲取容器元素個數(shù):size()  
	指定容器大小:resize(int num);
				 resize(int num,elem);//指定大小,超出部分用elem填充
	resize指定大小,若小于則會將超出部分刪除
注意:
	deque容器沒有獲取容量函數(shù)capacity()	

使用示例:

#include 
using namespace std;
#include 
void PrintDeque(deque& p)
{
	for (deque::iterator deq = p.begin(); deq != p.end(); deq++)
	{
		cout  deq;
	deq.push_back("hello");
	deq.push_back("學(xué)習(xí)");
	deq.push_back("c++");
	deq.push_back("deque容器");
	deq.push_back("使用");
	deq.push_back("示例");
	PrintDeque(deq);
	cout 
wKgaomSwmVaAR6_cAARyN4aZjqI875.png

5.deque元素的插入與刪除

deque容器是雙端性質(zhì)的,所以可以從頭端或者尾端插入數(shù)據(jù)。相關(guān)函數(shù)如下:


deque容器插入與刪除:
	push_back、pop_back  --尾插和尾刪
	push_front、pop_front --頭插和頭刪除
	
	insert(pos,elem); --pos是一個迭代器,在pos位置插入elem,返回新數(shù)據(jù)位置
	insert(pos,n,elem);  ---在pos位置插入n個elem,無返回值
	insert(pos,begin,end); --在pos位置插入begin~endl的數(shù)據(jù),無返回值
	
	clear()  --清空整個deque容器
	erase(begin,end); --刪除begin~end之間的數(shù),返回下一個數(shù)據(jù)位置
	erase(pos)  --刪除指定位置的數(shù)

使用示例:

#include 
using namespace std;
#include 
void PrintDeque(deque& deq)
{
	for (deque::iterator p = deq.begin(); p != deq.end(); p++)
	{
		cout  deq;
	//頭插
	deq.push_front(1);
	deq.push_front(2);
	deq.push_front(3);
	//尾插
	deq.push_back(4);
	deq.push_back(5);
	deq.push_back(6);
	cout  deq2;
	cout 
wKgZomSwmiGAT0foAAWEr2f-erI565.png

6.deque容器數(shù)據(jù)存取

deque可以通過[]讀寫數(shù)據(jù),也可以通過函數(shù)at()來實現(xiàn)。

deque容器數(shù)據(jù)存取:
	重載[]:operator[]()
	at(pos);
	獲取第一個成員:front
	獲取最后一個成員:back
	第一個成員的前一個位置:rend
	最后一個成員的下一個位置:end

使用示例:

#include 
using namespace std;
#include 
#include 
void test()
{
	deque deq;
	deq.push_back("hello");
	deq.push_back("c++");
	deq.push_back("學(xué)習(xí)");
	deq.push_back("示例");

	cout 
wKgaomSwmsSAbq-wAANnbZfJDjQ353.png

7.排序

可以使用sort函數(shù)對成員進行排序。該函數(shù)的頭文件是algorithm。

排序:sort(iterator begin,iterator end);//默認是升序 

使用示例:

#include 
#include 
#include 
#include 
using namespace std;

void test()
{
	string str = "hello,world";
	sort(str.begin(), str.end());
	cout  deq;
	deq.push_back(0);
	deq.push_back(2);
	deq.push_back(1);
	deq.push_front(4);
	deq.push_front(5);
	deq.push_front(6);
	cout 
wKgaomSwm5OAc2YOAAPtMyHiIW0296.png


審核編輯:湯梓紅
聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請聯(lián)系本站處理。 舉報投訴
  • 函數(shù)
    +關(guān)注

    關(guān)注

    3

    文章

    4331

    瀏覽量

    62596
  • 容器
    +關(guān)注

    關(guān)注

    0

    文章

    495

    瀏覽量

    22061
  • C++
    C++
    +關(guān)注

    關(guān)注

    22

    文章

    2108

    瀏覽量

    73641
收藏 人收藏

    評論

    相關(guān)推薦

    C++零基礎(chǔ)教程STL容器篇之deque容器,輕松上手C++STL

    編程語言C++語言
    電子學(xué)習(xí)
    發(fā)布于 :2023年01月14日 11:41:55

    HarmonyOS方舟開發(fā)框架容器類API的介紹與使用

    通過數(shù)組實現(xiàn),包括ArrayList、Vector、List、LinkedList、Deque、Queue、Stack七種。線性容器類API,充分考慮了數(shù)據(jù)訪問的速度,實現(xiàn)了運行時(Runtime)通過
    發(fā)表于 03-07 11:40

    HarmonyOS線性容器特性及使用場景

    線性容器實現(xiàn)能按順序訪問的數(shù)據(jù)結(jié)構(gòu),其底層主要通過數(shù)組實現(xiàn),包括ArrayList、Vector、List、LinkedList、Deque、Queue、Stack七種。 線性容器,充分考慮了數(shù)據(jù)
    發(fā)表于 09-27 15:10

    詳細剖析C++的的3種容器

    容器是隨著面向?qū)ο笳Z言的誕生而提出的,容器類在面向?qū)ο笳Z言中特別重要,甚至它被認為是早期面向?qū)ο笳Z言的基礎(chǔ)。在現(xiàn)在幾乎所有的面向?qū)ο蟮恼Z言中也都伴隨著一個容器集,在C++ 中,就是標(biāo)準(zhǔn)
    的頭像 發(fā)表于 01-09 12:57 ?4962次閱讀
    詳細剖析<b class='flag-5'>C++</b>的的3種<b class='flag-5'>容器</b>

    C++ vector刪除符合條件元素的編程技巧

    C++ vector中實際刪除元素使用的是容器vecrot中std::vector::erase()方法。 C++ 中std::remove()并不刪除元素,因為容器的size()沒有
    的頭像 發(fā)表于 09-20 10:03 ?5420次閱讀

    C++容器的使用代碼資料總結(jié)免費下載

    本文檔的主要內(nèi)容詳細介紹的是C++容器的使用代碼資料總結(jié)免費下載。
    發(fā)表于 01-29 10:52 ?3次下載
    <b class='flag-5'>C++</b><b class='flag-5'>容器</b>的使用代碼資料總結(jié)免費下載

    CC++是一回事嗎

    C89,C++標(biāo)準(zhǔn)是C++99。 我們來介紹C語言和C++中那些不同的地方。 函數(shù)默認
    的頭像 發(fā)表于 11-13 18:18 ?3296次閱讀

    夜空中最亮的星——deque容器

    一、deque工作原理:deque容器內(nèi)部有個中控器,維護每段緩沖區(qū)中的內(nèi)容,緩沖區(qū)中存放真實數(shù)據(jù);中控器維護的每個緩沖區(qū)的地址,使得使用deque時像一片連續(xù)的內(nèi)存空間,如下圖所示:
    的頭像 發(fā)表于 12-24 14:42 ?406次閱讀

    什么是deque

    雙端隊列(deque)和deque一樣都是STL的容器deque是雙端數(shù)組,而deque是單端的。跟任意其它類型
    的頭像 發(fā)表于 02-27 15:53 ?1937次閱讀

    C++學(xué)習(xí)筆記之順序容器

    C++中的順序容器是一種用于存儲和管理元素序列的數(shù)據(jù)結(jié)構(gòu)。它們提供了一組有序的元素,并支持在序列的任意位置插入和刪除元素。C++標(biāo)準(zhǔn)庫中提供了多種順序容器,包括vector、
    的頭像 發(fā)表于 05-11 17:05 ?596次閱讀

    C++入門之通用算法

    C++ 是一種強大的編程語言,它提供了許多通用算法,可以用于各種容器類型。這些算法是通過迭代器來操作容器中的元素,因此它們是通用的,可以用于不同類型的容器。在本篇博客中,我們將詳細介紹
    的頭像 發(fā)表于 05-17 09:40 ?670次閱讀

    ?數(shù)組和C++ std::array詳解

    std::array是C++容器庫提供的一個固定大小數(shù)組的容器。其與內(nèi)置的數(shù)組相比,是一種更安全、更容易使用的數(shù)組類型。
    的頭像 發(fā)表于 07-19 11:02 ?1118次閱讀
    ?數(shù)組和<b class='flag-5'>C++</b> std::array詳解

    C++之父新作帶你勾勒現(xiàn)代C++地圖

    為了幫助大家解決這些痛點問題,讓大家領(lǐng)略現(xiàn)代C++之美,掌握其中的精髓,更好地使用C++C++之父Bjarne Stroustrup坐不住了,他親自操刀寫就了這本《C++之旅》!
    的頭像 發(fā)表于 10-30 16:35 ?850次閱讀
    <b class='flag-5'>C++</b>之父新作帶你勾勒現(xiàn)代<b class='flag-5'>C++</b>地圖

    OpenHarmony語言基礎(chǔ)類庫【@ohos.util.Deque (線性容器Deque)】

    Deque(double ended queue)根據(jù)循環(huán)隊列的數(shù)據(jù)結(jié)構(gòu)實現(xiàn),符合先進先出以及先進后出的特點,支持兩端的元素插入和移除。Deque會根據(jù)實際需要動態(tài)調(diào)整容量,每次進行兩倍擴容。
    的頭像 發(fā)表于 04-25 21:17 ?211次閱讀
    OpenHarmony語言基礎(chǔ)類庫【@ohos.util.<b class='flag-5'>Deque</b> (線性<b class='flag-5'>容器</b><b class='flag-5'>Deque</b>)】

    鴻蒙語言基礎(chǔ)類庫:ohos.util.Deque 線性容器Deque

    Deque(double ended queue)根據(jù)循環(huán)隊列的數(shù)據(jù)結(jié)構(gòu)實現(xiàn),符合先進先出以及先進后出的特點,支持兩端的元素插入和移除。Deque會根據(jù)實際需要動態(tài)調(diào)整容量,每次進行兩倍擴容。
    的頭像 發(fā)表于 07-10 09:19 ?239次閱讀
    鴻蒙語言基礎(chǔ)類庫:ohos.util.<b class='flag-5'>Deque</b> 線性<b class='flag-5'>容器</b><b class='flag-5'>Deque</b>
    主站蜘蛛池模板: 黄色三级网站免费| 午夜免费看视频| 人人射人人草| 国产成人精品视频一区二区不卡| 在线亚洲日产一区二区| 亚洲特黄大黄一级毛片| 色婷婷婷丁香亚洲综合不卡| 欧美1区| 国产人成精品香港三级古代| 日韩一级片视频| 永久黄色免费网站| 亚洲 欧洲 日韩| 国产日韩精品一区二区三区| 色综合天| 被啪漫画羞羞漫画| 日韩欧美一区二区三区不卡视频 | 婷婷 夜夜| 亚洲理论在线观看| 一区二区三区亚洲视频| 性欧美护士18xxxxhd| 国产精品三区四区| 91综合网| 日成人网| 人人艹人人艹| 亚洲欧洲日韩综合| 97伊人| 49vv婷婷网| 男女爱爱爽爽福利免费视频| 色欲情狂| 亚洲伊人久久网| aaaa日本| 亚洲成av人影片在线观看| 免费看一级毛片| 天天干国产| 在线观看亚洲成人| freesex欧美| 2021天天干| 亚洲国产精品久久精品怡红院| 在线色网| 欧美日韩生活片| 天天摸天天碰天天碰|