精品国产人成在线_亚洲高清无码在线观看_国产在线视频国产永久2021_国产AV综合第一页一个的一区免费影院黑人_最近中文字幕MV高清在线视频

0
  • 聊天消息
  • 系統消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發帖/加入社區
會員中心
創作中心

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

3天內不再提示

c++值deque容器

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

1.deque容器介紹

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

wKgaomSwlVeABkc8AATxtQagCLQ587.png

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

deque容器,在空間管理上是通過內部中控器來實現的。中控器記錄每一個緩沖區的地址。緩沖區中存放真實的數據內容。因而在deque容器中,數據空間是由多段空間組成的。

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

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

wKgZomSwljqAG_uXAARxbhSzBNw535.png

2.deque容器構造函數

deque容器的構造函數和vector類似,由無參構造、有參構造、拷貝構造。

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

應用示例:

#include 
using namespace std;
#include 
#include 
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.rbegin(), deq.rend());//區間賦值
	PrintDeque(deq2);
	deque deq3(3, 666);//賦值3個666
	PrintDeque(deq3);
	cout  deq4(deq);//拷貝構造
	PrintDeque(deq4);
}
int main()
{
	test();
	system("pause");
}
wKgaomSwl_uAGNf4AAOosi5FoJY681.png

3.deque容器賦值

賦值方式可以直接使用“=”賦值,也可以通過函數assign實現。

deq賦值:
	重載"=":operator=();
	assign(begin,end);//區間賦值
	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設置和獲取元素個數

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


deque容器獲取大小:
	判斷容器是否為空:empty()  ---為空返回true
	獲取容器元素個數:size()  
	指定容器大小:resize(int num);
				 resize(int num,elem);//指定大小,超出部分用elem填充
	resize指定大小,若小于則會將超出部分刪除
注意:
	deque容器沒有獲取容量函數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("學習");
	deq.push_back("c++");
	deq.push_back("deque容器");
	deq.push_back("使用");
	deq.push_back("示例");
	PrintDeque(deq);
	cout 
wKgaomSwmVaAR6_cAARyN4aZjqI875.png

5.deque元素的插入與刪除

deque容器是雙端性質的,所以可以從頭端或者尾端插入數據。相關函數如下:


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

使用示例:

#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容器數據存取

deque可以通過[]讀寫數據,也可以通過函數at()來實現。

deque容器數據存取:
	重載[]: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("學習");
	deq.push_back("示例");

	cout 
wKgaomSwmsSAbq-wAANnbZfJDjQ353.png

7.排序

可以使用sort函數對成員進行排序。該函數的頭文件是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


審核編輯:湯梓紅
聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。 舉報投訴
  • 函數
    +關注

    關注

    3

    文章

    4308

    瀏覽量

    62444
  • 容器
    +關注

    關注

    0

    文章

    494

    瀏覽量

    22046
  • C++
    C++
    +關注

    關注

    22

    文章

    2104

    瀏覽量

    73503
收藏 人收藏

    評論

    相關推薦

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

    編程語言C++語言
    電子學習
    發布于 :2023年01月14日 11:41:55

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

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

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

    線性容器實現能按順序訪問的數據結構,其底層主要通過數組實現,包括ArrayList、Vector、List、LinkedList、Deque、Queue、Stack七種。 線性容器,充分考慮了數據
    發表于 09-27 15:10

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

    容器是隨著面向對象語言的誕生而提出的,容器類在面向對象語言中特別重要,甚至它被認為是早期面向對象語言的基礎。在現在幾乎所有的面向對象的語言中也都伴隨著一個容器集,在C++ 中,就是標準
    的頭像 發表于 01-09 12:57 ?4922次閱讀
    詳細剖析<b class='flag-5'>C++</b>的的3種<b class='flag-5'>容器</b>

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

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

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

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

    CC++是一回事嗎

    C89,C++標準是C++99。 我們來介紹C語言和C++中那些不同的地方。 函數默認
    的頭像 發表于 11-13 18:18 ?3258次閱讀

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

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

    什么是deque

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

    C++學習筆記之順序容器

    C++中的順序容器是一種用于存儲和管理元素序列的數據結構。它們提供了一組有序的元素,并支持在序列的任意位置插入和刪除元素。C++標準庫中提供了多種順序容器,包括vector、
    的頭像 發表于 05-11 17:05 ?571次閱讀

    C++入門之通用算法

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

    ?數組和C++ std::array詳解

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

    C++之父新作帶你勾勒現代C++地圖

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

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

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

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

    Deque(double ended queue)根據循環隊列的數據結構實現,符合先進先出以及先進后出的特點,支持兩端的元素插入和移除。Deque會根據實際需要動態調整容量,每次進行兩倍擴容。
    的頭像 發表于 07-10 09:19 ?213次閱讀
    鴻蒙語言基礎類庫:ohos.util.<b class='flag-5'>Deque</b> 線性<b class='flag-5'>容器</b><b class='flag-5'>Deque</b>