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

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

3天內不再提示

c++之棧和隊列

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

1.stack容器

stack ,棧(堆棧),是一種先進后出(First In Last Out,FILO)的數據結構,先插入的數據在棧底,后放入的數據在棧頂,所有的數據只能從棧頂取出。

在生活中先進后出的例子友很多,例如我們在桌子上摞書,先放的在最下面,后放的在最上面。在取書的時候也是先取最后放的,最才能取到第一個放的。

wKgZomSxO8eAeVP5AAPtT7ckrTE867.png

在棧容器中,只有棧頂數據才可以被外界訪問,因此stack不存在遍歷。

2.棧容器使用示例

  • stack(棧)容器特性:

先進后出(后進先出) --類似與往袋子中裝東西,先放進去的在最下面,最后放進行的可以先拿出來;第一個放進去的 --->棧底

最后一個放進的 --->棧頂

stack只允許從棧頂取數據

stack容器無法對數據進行排序sort,但可以判斷容器是否為空empty,可以計算元素的個數size;

  • 相關函數:
stack構造函數:
	stack stk; //默認構造
	stack(const stack &p);//拷貝構造
stack賦值
	operator=() --運算符號重載
stack入棧與出棧:
	push() -->入棧
	emplace() -->入棧(在容器尾部插入元素)
	pop() --->出棧
	top() -->查看棧頂元素
	empty() -->判斷容器是否為空
	size()  -->獲取元素個數
	swap -->交換元素

使用示例:

#include 
#include 
using namespace std;
void test()
{
	//創建一個stack容器
	stack stk;
	//入棧
	stk.push(10);
	stk.push(20);
	stk.push(30);
	stk.push(40);
	stk.emplace(100);
	stackstk3(stk);//拷貝構造
	cout stk2 = stk;//賦值
	if (stk2.empty())
	{
		cout 
wKgaomSxPPiAf6wEAAPPMhfoUIQ563.png

3.queue容器

隊列(queue 和堆棧相似,是一種可以存取的數據結構,不同的是隊列的存取是在兩個不同的方向進行的,因此其主要特征是先進先出(First-in-first-out,FIFO),類似于我們生活中的水管。

wKgaomSxPaOAIMV_AAQVau97g90678.png

4.queue容器使用示例

隊列只需要從對尾插入數據(入隊,push_back),對頭取數據(出隊,pop_front);

隊列只能訪問對頭和隊尾數據,其他數據需要出隊才能訪問,所以不存在遍歷隊列;

返回隊列頭數據:front()

返回隊列尾數據:back()

  • 相關函數:
隊列構造函數:
	queue que; //隊列通過類模板實現,默認構造函數
	queue(const queue &p);
	operator=(queue &p)  -->運算符重載
相關成功函數:
	入隊:push()
	出隊:pop()
獲取隊列頭數據:front();
獲取隊列尾數據:back();
判斷隊列是否為空:empty();
獲取隊列中元素個數:size();
互換元素:swap();

使用示例:

#include 
#include 
using namespace std;
void test()
{
	queue q;
	//入隊
	q.push(10);
	q.push(20);
	q.push(30);
	q.emplace(40);//從隊列尾插入數據
	cout 
wKgZomSxPmGACvvMAAPMCRBNWzc279.png
聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。 舉報投訴
  • C++
    C++
    +關注

    關注

    21

    文章

    2068

    瀏覽量

    72981
  • 數據結構
    +關注

    關注

    3

    文章

    564

    瀏覽量

    39937
  • 隊列
    +關注

    關注

    1

    文章

    46

    瀏覽量

    10859
收藏 人收藏

    評論

    相關推薦

    隊列C++中的queue詳解

    隊列就是一種線性的數據結構,它與日常生活中排隊的隊列相似,即先進先出(LIFO, First In First Out),這點也是它與棧(Stack)的最大不同之處。
    的頭像 發表于 07-18 17:31 ?824次閱讀
    <b class='flag-5'>隊列</b>與<b class='flag-5'>C++</b>中的queue詳解

    C++數據結構:隊列的順序存儲框架搭建

    C++
    電路設計
    發布于 :2023年01月05日 15:38:53

    C++數據結構:隊列的順序存儲測試

    C++
    電路設計
    發布于 :2023年01月05日 15:49:58

    C++數據結構:隊列的順序存儲框架實現

    C++
    電路設計
    發布于 :2023年01月05日 15:50:36

    C++小白自學基礎課簡單的C++程序helloworld02

    C++
    電子學習
    發布于 :2023年01月12日 22:27:52

    MSP430裸奔框架C++程序源碼(菜農C++裸奔大法系列之一) 轉載

    /*------------------------------------------------------------------------MSP430裸奔框架C++程序源碼(菜農C++裸奔大法)本程序主要表現了
    發表于 02-01 11:06

    隊列以后出只有剛開始一組數出來,后續的就沒有了,怎么調了?有償

    隊列以后出只有剛開始一組數出來,后續的就沒有了,怎么調了?有償
    發表于 03-13 17:06

    淺析STM32F4 C++ 封裝庫EXTI

    STM32F4 C++ 封裝庫 EXTI 這幾天看了下 mbed 的源碼,給上層應用調用的接口封裝的還是不錯的。代碼質量比較高,注釋也很詳細,文檔和例程比較全。但是驅動層的程序全是 C 語言編寫
    發表于 08-23 09:06

    C語言C++運用

    , 數據庫, 異常處理等方面深入細致的學習; 不僅如此,c/c++ 課程體系還涵蓋了html 以及js 的內容使學員成為全式工程師, 符合企業真正需求的人才。二、精通linux 操作系統:linux
    發表于 11-25 10:47

    數據結構隊列順序及其構造

    數據結構隊列順序隊列構造順序隊列順序隊列的初始化判斷隊列是否滿判斷
    發表于 12-17 06:11

    嵌入式軟件中的隊列有何特點

    數據結構隊列篇1 隊列特點及在嵌入式軟件中的應用隊列(queue)是一個簡單線性表,它是一個允許在一端進行插入操作,而在另一端進行刪除操
    發表于 12-21 07:28

    在main文件中怎樣去使用C++

    ESP32 ESP-IDF 學習筆記(五 - 2)【使用C++的工程】文章目錄ESP32 ESP-IDF 學習筆記(五 - 2)【使用C++的工程】1、導言2、在main文件中
    發表于 01-07 07:44

    OpenHarmony——內核對象隊列算法詳解(下)

    ,OpenHarmony內核通過頭指針的寫操作和讀操作,把的操作兼容到隊列中??偨Y本文主要介紹了OpenHarmony內核對象隊列的算法FILO,至此,
    發表于 08-09 16:16

    利用C++提供的隊列封裝一個消息隊列

    最近的C++項目中,需要用到消息隊列,但是C++中又沒有原生的消息隊列,就在網上找了一下相關資料,利用C++提供的
    的頭像 發表于 05-20 15:16 ?1170次閱讀
    利用<b class='flag-5'>C++</b>提供的<b class='flag-5'>隊列</b>封裝一個消息<b class='flag-5'>隊列</b>

    雙端隊列C++ std::deque的用法說明

    雙端隊列實際上是隊列的一種變形,隊列要求只能在隊尾添加元素,在隊頭刪除元素,而雙端隊列在隊頭和隊尾都可以進行添加和刪除元素的操作。
    的頭像 發表于 07-18 17:43 ?425次閱讀
    雙端<b class='flag-5'>隊列</b>和<b class='flag-5'>C++</b> std::deque的用法說明
    亚洲欧美日韩精品久久_久久精品AⅤ无码中文_日本中文字幕有码在线播放_亚洲视频高清不卡在线观看
    <acronym id="s8ci2"><small id="s8ci2"></small></acronym>
    <rt id="s8ci2"></rt><rt id="s8ci2"><optgroup id="s8ci2"></optgroup></rt>
    <acronym id="s8ci2"></acronym>
    <acronym id="s8ci2"><center id="s8ci2"></center></acronym>