<em>Mac</em>Book项目 2009年学校开始实施<em>Mac</em>Book项目,所有师生配备一本<em>Mac</em>Book,并同步更新了校园无线网络。学校每周进行电脑技术更新,每月发送技术支持资料,极大改变了教学及学习方式。因此2011
2021-06-01 09:32:01
介面卡是一種設計模式(設計模式是一套反覆使用的、大部分人知道的程式碼設計經驗的總結),該模式試講一個類的介面轉化為使用者希望的另一個介面,雖然stack與queue中也可以存放元素,但在STL中並沒有將其劃分為容器,而是成為容器介面卡,這是因為stack與佇列只是堆其他容器進行了包裝,STL中的stack和queue是使用雙端佇列進行封裝的。
它是一種雙開口的連續空間資料結構(與佇列沒有關係),雙開口的含義是可以再兩端進行插入刪除操作,且時間複雜度為O(1),與vector比較,頭插效率比較高,不需要行動資料,與list比較,空間利用率高。
deque並不是真正的連續空間,而是使用一小段連續的小空間拼接而成,實際上deque類似於一個動態的二維陣列,其底層結構如下圖所示:
中控陣列map: map陣列是一個指標陣列,指向多個buff陣列用來儲存資料,當buff陣列頭或尾滿了,就新開闢一個buff陣列,其指標存在map的相對應位置,當map陣列滿了,會對map陣列擴容(指標陣列的擴容並不會效率低)
deque所謂的連續空間是一個假象,是他底層複雜的迭代器實現
STL原始碼:
typedef T** map_pointer; T* cur; T* first; T* last; map_pointer node
優點:
雙端佇列,說明他很合適頭插頭刪,尾插尾刪,他去做stack和queue的容器介面卡很合適。
缺點:
雙端佇列中間插入刪除非常麻煩,效率不高。
deque是一種折中的方案設計,隨機存取效率不如vector,任意插入刪除不及list
stack是一種容器介面卡,專門在具有後進先出的上下文環境中,其刪除只能是在一端進行操作。
stack是作為容器介面卡被實現的,容器介面卡即是對特定類封裝作為其底層的容器,並提供一組特定的成員函數來存取其元素,將特定類作為其底層的,元素特定容器的尾部(即棧頂)被壓入和彈出 。
stack的底層原理可以是任何標椎的容器類別範本或者一些特定的容器類,這些容器類應該支援以下操作:
模擬實現
template<class T, class Con = deque<T>> class stack { public: stack(); void push(const T& x) { _c.push_back(x); } void pop() { _c.pop_back(); } T& top() { return _c.back() } const T& top()const { return _c.back(); } size_t size()const { return _c.size(); } bool empty()const { return _c.empty(); } private: Con _c; };
佇列是一種容器介面卡,專門用於在FIFO上下文(先進先出)中操作,其中從容器一端插入元素,另一端提取元素
佇列作為容器介面卡實現,容器介面卡即將特定容器類封裝作為其底層容器類,queue提供一組特定的成員函數來存取其元素。元素從隊尾入佇列,從隊頭出佇列
底層容器可以是標準容器類別範本之一,也可以是其他專門設計的容器類。該底層容器應至少支援以下操作:
模擬實現
template<class T, class Con = deque<T>> class queue { public: queue(); void push(const T& x) { _c.push_back(x); } void pop() { _c.pop_front(); } T& back() { return _c.back(); } const T& back()const { return _c.back(); } T& front() { return _c.front(); } const T& front()const { return _c.front(); } size_t size()const { return _c.size(); } bool empty()const { return _c.empty(); } private: Con _c; };
到此這篇關於C++ 詳細講解stack與queue的模擬實現 的文章就介紹到這了,更多相關C++ stack與queue內容請搜尋it145.com以前的文章或繼續瀏覽下面的相關文章希望大家以後多多支援it145.com!
相關文章
<em>Mac</em>Book项目 2009年学校开始实施<em>Mac</em>Book项目,所有师生配备一本<em>Mac</em>Book,并同步更新了校园无线网络。学校每周进行电脑技术更新,每月发送技术支持资料,极大改变了教学及学习方式。因此2011
2021-06-01 09:32:01
综合看Anker超能充系列的性价比很高,并且与不仅和iPhone12/苹果<em>Mac</em>Book很配,而且适合多设备充电需求的日常使用或差旅场景,不管是安卓还是Switch同样也能用得上它,希望这次分享能给准备购入充电器的小伙伴们有所
2021-06-01 09:31:42
除了L4WUDU与吴亦凡已经多次共事,成为了明面上的厂牌成员,吴亦凡还曾带领20XXCLUB全队参加2020年的一场音乐节,这也是20XXCLUB首次全员合照,王嗣尧Turbo、陈彦希Regi、<em>Mac</em> Ova Seas、林渝植等人全部出场。然而让
2021-06-01 09:31:34
目前应用IPFS的机构:1 谷歌<em>浏览器</em>支持IPFS分布式协议 2 万维网 (历史档案博物馆)数据库 3 火狐<em>浏览器</em>支持 IPFS分布式协议 4 EOS 等数字货币数据存储 5 美国国会图书馆,历史资料永久保存在 IPFS 6 加
2021-06-01 09:31:24
开拓者的车机是兼容苹果和<em>安卓</em>,虽然我不怎么用,但确实兼顾了我家人的很多需求:副驾的门板还配有解锁开关,有的时候老婆开车,下车的时候偶尔会忘记解锁,我在副驾驶可以自己开门:第二排设计很好,不仅配置了一个很大的
2021-06-01 09:30:48
不仅是<em>安卓</em>手机,苹果手机的降价力度也是前所未有了,iPhone12也“跳水价”了,发布价是6799元,如今已经跌至5308元,降价幅度超过1400元,最新定价确认了。iPhone12是苹果首款5G手机,同时也是全球首款5nm芯片的智能机,它
2021-06-01 09:30:45