国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

[C++隨筆錄] stack && queue模擬實現(xiàn)

這篇具有很好參考價值的文章主要介紹了[C++隨筆錄] stack && queue模擬實現(xiàn)。希望對大家有所幫助。如果存在錯誤或未考慮完全的地方,請大家不吝賜教,您也可以點擊"舉報違法"按鈕提交疑問。

stack的實現(xiàn)

???stack的容器適配器應(yīng)該選什么比較好呢?

  • 首先, stack的特點是 頭部入, 尾部出 ? 尾插 和 尾刪操作比較頻繁
    我們前面學過的容器有 vector 和 list,
    vector 和 list的尾插 和 尾刪的時間復雜度是 O(1), 還是適合做容器適配器的.

stack的基本結(jié)構(gòu)

template<class T, class Continer = vector<T>> // 默認容器適配器是vector
class stack
{

private:
	Continer _con; // 維護這個容器對象就可以了
};

用這個容器對象來進行模擬實現(xiàn)stack


按照我們之前的想法, 容器適配器要么是 vector, 要么是 list.
這兩者都是 自定義類型 ? 自定義類型會調(diào)用它的默認構(gòu)造 ? 我們都不用寫構(gòu)造函數(shù)的


  1. push
void push(const T& val)
{
	_con.push_back(val);
}
  1. pop
void pop()
{
	_con.pop_back();
}
  1. size
const T& top() const
{
	return _con.back();
}
  1. empty
bool empty() const
{
	return _con.size() == 0;
}
  1. top
const T& top() const
{
	return _con.back();
}

stack測試用例

void test_stack()
{
	muyu::stack<int> st;

	st.push(1);
	st.push(2);
	st.push(3);
	st.push(4);
	cout << "size->" << st.size() << endl;

	while (!st.empty())
	{
		cout << st.top() << " ";
		st.pop();
	}
	cout << endl;

	st.push(2);
	st.push(3);
	st.push(4);
	st.pop();
	st.pop();
	cout << "size->" << st.size() << endl;

	while (!st.empty())
	{
		cout << st.top() << " ";
		st.pop();
	}
	cout << endl;

}

queue的實現(xiàn)

???queue的容器適配器能不能用 vector? 能不能使用list?

  • 首先, queue的特點是 隊尾入, 對頭出 ? 尾插, 頭刪操作比較頻繁
    其次, 我們來考量vector 和 list的尾插 和 頭刪效率如何?
    vector的尾插是O(1), 頭刪是O(n )且 沒有pop_front函數(shù)
    list的尾插是O(1), 頭刪也是O(1) 且 有pop_front函數(shù)
    ? 所以, 我們queue的容器適配器, list 比 vector更適合

queue的基本結(jié)構(gòu)

	template<class T, class Continer = list<T>> // 默認容器適配器是list
	class queue
	{

	private:
		Continer _con; // 維護容器對象
	};

  1. push
void push(const T& val = T())
{
	_con.push_back(val);
}
  1. pop
void pop()
{
	_con.pop_front();
}
  1. front
const T& front() const
{
	return _con.front();
}
  1. back
const T& back() const
{
	return _con.back();
}
  1. empty
bool empty() const
{
	return _con.size() == 0;
}
  1. size
size_t size() const
{
	return _con.size();
}

queue測試用例

void test_queue()
{
	muyu::queue<int> q;
	q.push(1);
	q.push(2);
	q.push(3);
	q.push(4);
	q.push(5);
	cout << "front->" << q.front() << endl;
	cout << "back->" << q.back() << endl;
	cout << "size->" << q.size() << endl;
	cout << endl;

	q.pop();
	q.pop();
	cout << "front->" << q.front() << endl;
	cout << "back->" << q.back() << endl;
	cout << "size->" << q.size() << endl;
	cout << endl;

	while (!q.empty())
	{
		cout << q.front() << " ";
		q.pop();
	}
	cout << endl;
	
}

deque

[C++隨筆錄] stack && queue模擬實現(xiàn),C++,c++,開發(fā)語言,stl,數(shù)據(jù)結(jié)構(gòu),算法
源碼中, stack 和 queue的默認容器適配器給的是 deque.

我們來看一下deque的接口函數(shù)
[C++隨筆錄] stack && queue模擬實現(xiàn),C++,c++,開發(fā)語言,stl,數(shù)據(jù)結(jié)構(gòu),算法
我們驚奇的發(fā)現(xiàn): deque不僅可以支持隨機訪問 [], 還支持 頭插, 頭刪, 尾插, 尾刪. 這不妥妥地是 vector 和 list 的結(jié)合體嘛.

???那deque這么厲害, 我們之前為啥沒有聽過呢?

  • 由于這個容器不值得我們?nèi)ド疃葘W習, 我這里就偷點懶, 盜用航哥的圖了!
    [C++隨筆錄] stack && queue模擬實現(xiàn),C++,c++,開發(fā)語言,stl,數(shù)據(jù)結(jié)構(gòu),算法

禪宗說了‘人人都有佛性’后就枯坐,什么都不管了。說了‘佛向心頭做’后就真的在心頭做,不去實踐。而我說了‘在心上用功’后,必須去實踐。文章來源地址http://www.zghlxwxcb.cn/news/detail-739127.html

到了這里,關(guān)于[C++隨筆錄] stack && queue模擬實現(xiàn)的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來自互聯(lián)網(wǎng)用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務(wù),不擁有所有權(quán),不承擔相關(guān)法律責任。如若轉(zhuǎn)載,請注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實不符,請點擊違法舉報進行投訴反饋,一經(jīng)查實,立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費用

相關(guān)文章

  • 容器適配器---deque和STL ---stack queue priority_queue的模擬實現(xiàn) C++

    目錄 一、容器適配器 deque原理 deque的缺陷 deque的優(yōu)勢 二、stack的模擬實現(xiàn) ?三、queue的模擬實現(xiàn) 四、優(yōu)先級隊列的模擬實現(xiàn) 適配器是一種設(shè)計模式(設(shè)計模式是一套被反復使用的、多數(shù)人知曉的、經(jīng)過分類編目的、代碼設(shè)計經(jīng)驗的總結(jié)),該種模式是將一個類的接口轉(zhuǎn)換成客戶

    2024年02月02日
    瀏覽(24)
  • 【C++】STL中的容器適配器 stack queue 和 priority_queue 的模擬實現(xiàn)

    【C++】STL中的容器適配器 stack queue 和 priority_queue 的模擬實現(xiàn)

    適配器是一種設(shè)計模式 (設(shè)計模式是一套被反復使用的、多數(shù)人知曉的、經(jīng)過分類編目的、代碼設(shè)計經(jīng)驗的總結(jié)),該種模式是將一個類的接口轉(zhuǎn)換成客戶希望的另外一個接口。 例如我們常見的充電器就是一種適配器,它將我們常用的220V交流電壓轉(zhuǎn)化為4,5V (或者其他更高的電

    2023年04月26日
    瀏覽(24)
  • C++入門之stl六大組件--stack和queue源碼深度剖析及模擬實現(xiàn)

    目錄 前言 一、stack的介紹和使用 1.stack的介紹 2.stack的使用 3.stack的模擬實現(xiàn) 二、queue的介紹和使用 1.queue的介紹 2.queue的使用 3.queue的模擬實現(xiàn) 三、priority_queue的介紹和使用 1.priority_queue的介紹 2.priority_queue的使用 3.priority_queue的模擬實現(xiàn) 3.1解決一個topK問題 四、容器適配器 1

    2024年02月14日
    瀏覽(22)
  • 【C++】STL中stack,queue容器適配器的模擬實現(xiàn)(使用deque容器)

    【C++】STL中stack,queue容器適配器的模擬實現(xiàn)(使用deque容器)

    ??博客主頁: 主頁 ??系列專欄: C++ ??感謝大家點贊??收藏?評論?? ??期待與大家一起進步! 雖然stack和queue中也可以存放元素,但在STL中并沒有將其劃分在容器的行列,而是將其稱為容器適配器,這是因為stack和隊列只是對其他容器的接口進行了包裝,STL中stack和

    2024年02月15日
    瀏覽(31)
  • STL之stack+queue的使用及其實現(xiàn)

    STL之stack+queue的使用及其實現(xiàn)

    所屬專欄:C“嘎嘎\\\" 系統(tǒng)學習?? ?? 博主首頁:初陽785?? ?? 代碼托管:chuyang785?? ?? 感謝大家的支持,您的點贊和關(guān)注是對我最大的支持?。?!?? ?? 博主也會更加的努力,創(chuàng)作出更優(yōu)質(zhì)的博文??!?? stack的文檔介紹 stack是一種容器適配器,專門用在具有后進先

    2024年02月21日
    瀏覽(15)
  • 帶你深入理解“?!保╟語言 c++和stl Stack三個版本的模擬實現(xiàn))

    帶你深入理解“?!保╟語言 c++和stl Stack三個版本的模擬實現(xiàn))

    目錄 一.棧的概念及結(jié)構(gòu) 二.棧的實現(xiàn)(c語言版) 2.1靜態(tài)增長的棧 2.2動態(tài)增長的棧 2.3動態(tài)棧的模擬實現(xiàn) ? ?1.棧的初始化 ? 2.入棧 ?3.出棧 4.獲取棧頂元素 5.獲取棧中有效數(shù)據(jù)個數(shù) 6.檢查棧是否為空 7.棧的銷毀 三.C++ 版本模擬實現(xiàn)棧 ?1.C++版本的源代碼 四.c語言版本的源代碼

    2024年02月08日
    瀏覽(39)
  • 【STL】stack與queue的底層原理及其實現(xiàn)

    【STL】stack與queue的底層原理及其實現(xiàn)

    (圖片來自知乎) 1.stack是一種 容器適配器 ,模擬了棧的數(shù)據(jù)結(jié)構(gòu)。數(shù)據(jù)只能從一端進去,另一端出來( 先進后出 )。 2.stack適配器 默認是由 deque 容器實現(xiàn) 的,也可以顯示要求stack的底層封裝的容器類型。由于棧的特性, array 和 forward_list 不能用來構(gòu)造stack適配器 。 3.st

    2024年04月10日
    瀏覽(20)
  • STL容器適配器 -- stack和queue(使用+實現(xiàn))(C++)

    STL容器適配器 -- stack和queue(使用+實現(xiàn))(C++)

    棧和隊列數(shù)據(jù)結(jié)構(gòu)+畫圖分析如果對棧和隊列的結(jié)構(gòu)不了解的,可以先看該鏈接的內(nèi)容 使用stack時需要頭文件 #includestack stack是一種容器適配器,用于具有 后進先出 (LIFO)的環(huán)境中。只能從容器的一端(棧頂),執(zhí)行刪除、插入和提取操作。 stack是作為容器適配器實現(xiàn)的,容器

    2024年02月14日
    瀏覽(30)
  • stack&queue的模擬實現(xiàn)

    stack&queue的模擬實現(xiàn)

    stack模擬: stack的源代碼: stack的全部源代碼就這些。 stack的代碼少,原因在于采用了適配器模式,所謂適配器,以電器為例,每個電器都有電源適配器,中國的家用電源為220V的交流電,但是幾乎沒有電器需要220V的交流電,所以每個電器都有一個電源適配器,將家庭電壓轉(zhuǎn)換

    2024年02月06日
    瀏覽(21)
  • 模擬實現(xiàn)stack類與queue類

    前言: 本章我們將學習 stack 與 queue 的基本使用以及模擬實現(xiàn)。與前面已經(jīng)學過的容器不同, stack 與 queue 屬于 STL 六大組件之一的容器適配器范疇。 在 STL 中, stack 是一個模板類,用于實現(xiàn)棧數(shù)據(jù)結(jié)構(gòu)。棧是一種后進先出(LIFO)的數(shù)據(jù)結(jié)構(gòu),可以在棧頂進行插入和刪除操作

    2024年02月16日
    瀏覽(27)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包