RM新时代网站-首页

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

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

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

c++之棧和隊列

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

1.stack容器

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

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

wKgZomSxO8eAeVP5AAPtT7ckrTE867.png

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

2.棧容器使用示例

  • stack(棧)容器特性:

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

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

stack只允許從棧頂取數(shù)據(jù)

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

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

使用示例:

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

3.queue容器

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

wKgaomSxPaOAIMV_AAQVau97g90678.png

4.queue容器使用示例

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

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

返回隊列頭數(shù)據(jù):front()

返回隊列尾數(shù)據(jù):back()

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

使用示例:

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

    關(guān)注

    22

    文章

    2108

    瀏覽量

    73617
  • 數(shù)據(jù)結(jié)構(gòu)

    關(guān)注

    3

    文章

    573

    瀏覽量

    40121
  • 隊列
    +關(guān)注

    關(guān)注

    1

    文章

    46

    瀏覽量

    10891
收藏 人收藏

    評論

    相關(guān)推薦

    C++STL算法(二)

    C++STL算法(二)
    的頭像 發(fā)表于 07-18 14:49 ?1033次閱讀
    <b class='flag-5'>C++</b><b class='flag-5'>之</b>STL算法(二)

    c++STL算法(三)

    c++STL算法(三)
    的頭像 發(fā)表于 07-18 15:00 ?1277次閱讀
    <b class='flag-5'>c++</b><b class='flag-5'>之</b>STL算法(三)

    隊列C++中的queue詳解

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

    C++文件操作

    C++文件操作
    的頭像 發(fā)表于 07-21 10:52 ?1107次閱讀
    <b class='flag-5'>C++</b><b class='flag-5'>之</b>文件操作

    隊列

    隊列:1、隊列定義:限定僅只能在表尾端進行插入和刪除的線性表。頂:表尾端被稱之為頂。
    發(fā)表于 08-13 13:50 ?0次下載

    你還會手寫隊列隊列的基本實現(xiàn)程序說明

    昨天跟一個CSDN上的朋友聊天,他說現(xiàn)在如果讓他自己手寫一個或者隊列,估計都要寫蠻久的,平時雖然都在用,但是都是別人封裝好的集合。確實,經(jīng)典的數(shù)據(jù)結(jié)構(gòu),包括排序算法,雖然我們平時不用手寫了,但是
    的頭像 發(fā)表于 11-11 11:34 ?2798次閱讀

    深入淺出了解單調(diào)和單調(diào)隊列

    袁廚攜袁記菜館全體工作人員祝大家在新的一年,健健康康,開開心心。發(fā)量暴增,錢包超大。 哎,元旦假期結(jié)束了,又要繼續(xù)搬磚了,我們接著做題吧,今天我們好好說說單調(diào)和單調(diào)隊列。其實很容易理解,單調(diào)就是
    的頭像 發(fā)表于 02-02 10:18 ?1473次閱讀
    深入淺出了解單調(diào)<b class='flag-5'>棧</b>和單調(diào)<b class='flag-5'>隊列</b>

    隊列實現(xiàn)原理是什么?隊列實現(xiàn)方案有哪幾種?

    是一種后進先出的數(shù)據(jù)結(jié)構(gòu),而隊列是一種先進先出的數(shù)據(jù)結(jié)構(gòu),兩者原理不難理解,使用也簡單。
    的頭像 發(fā)表于 07-04 13:28 ?2730次閱讀
    <b class='flag-5'>隊列</b>實現(xiàn)<b class='flag-5'>棧</b>原理是什么?<b class='flag-5'>隊列</b>實現(xiàn)<b class='flag-5'>棧</b>方案有哪幾種?

    簡述Labview使用隊列的區(qū)別

    簡述Labview使用隊列的區(qū)別
    發(fā)表于 01-19 09:50 ?9次下載

    C++設(shè)計新思維-泛型編程與設(shè)計應(yīng)用

    C++設(shè)計新思維-泛型編程與設(shè)計應(yīng)用
    發(fā)表于 11-16 15:59 ?3次下載

    C++學(xué)習(xí)筆記c++的基本認(rèn)識

    自這篇文章我們即將開始C++的奇幻之旅,其內(nèi)容主要是讀C++ Primer的總結(jié)和筆記,有興趣可以找原版書看看,對于學(xué)習(xí)C++還是有很大幫助的。這篇文章將從一個經(jīng)典的程序開始介紹C++
    的頭像 發(fā)表于 03-17 13:57 ?726次閱讀

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

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

    數(shù)據(jù)結(jié)構(gòu)隊列,串介紹

    隊列不再過多描述,了解入規(guī)則,入隊出隊規(guī)則,的遞歸應(yīng)用即可,面試肯定不會考這種概念,太簡單。
    的頭像 發(fā)表于 05-26 14:35 ?508次閱讀
    數(shù)據(jù)結(jié)構(gòu)<b class='flag-5'>之</b><b class='flag-5'>棧</b>,<b class='flag-5'>隊列</b>,串介紹

    兩個實現(xiàn)一個隊列方法

    隊列是比較基礎(chǔ)的數(shù)據(jù)結(jié)構(gòu)。無論在工作中,還是在面試中,隊列都用的比較多。在計算機的世界,你會看到隊列
    的頭像 發(fā)表于 10-08 15:54 ?801次閱讀

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

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