日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > c/c++ >内容正文

c/c++

C++的三种容器适配器

發布時間:2025/3/15 c/c++ 21 豆豆
生活随笔 收集整理的這篇文章主要介紹了 C++的三种容器适配器 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

1.對容器適配器的理解

C++提供了三種容器適配器(container adapter):
stack,queue和priority_queue。
stack和queue基于deque實現,priority_queue基于vector實現。

舉個簡單的例子,我們手機充電的時候需要電源適配器來把220v的交流電轉換成較低電壓的直流電以供手機充電使用,220v的電壓太高了,我們不需要那么高的電壓,而且高電壓還有可能產生其他很多不良后果。基礎的容器類型就相當于那220v的電壓,經過適配器轉換后才成為了我們需要的低電壓(stack,queue,priority_queue)。

你完全可以在deque上按照stack的方式工作,但是deque太強大了,它提供了遠超過stack操作(empty, size, pop, top, push)所需的各種接口,你可以小心翼翼地在deque上只使用那幾種操作來模擬一個棧,但是你很有可能一失誤來個push_front()之類的操作,你小心翼翼模擬的棧就毀了。所以,我們需要適配器來做一下轉換,只保留基礎類型提供的接口中的一部分,保留的這部分操作對于你所需要的數據結構來說已經足夠了。

2.三種容器適配器提供的操作

1.stack

stack<int> s; stack< int, vector<int> > stk; //覆蓋基礎容器類型,使用vector實現stk s.empty(); //判斷stack是否為空,為空返回true,否則返回false s.size(); //返回stack中元素的個數 s.pop(); //刪除棧頂元素,但不返回其值 s.top(); //返回棧頂元素的值,但不刪除此元素 s.push(item); //在棧頂壓入新元素item

2.queue & priority_queue

queue<int> q; //priority_queue<int> q; q.empty(); //判斷隊列是否為空 q.size(); //返回隊列長度 q.push(item); //對于queue,在隊尾壓入一個新元素//對于priority_queue,在基于優先級的適當位置插入新元素//queue only: q.front(); //返回隊首元素的值,但不刪除該元素 q.back(); //返回隊尾元素的值,但不刪除該元素//priority_queue only: q.top(); //返回具有最高優先級的元素值,但不刪除該元素

總結

以上是生活随笔為你收集整理的C++的三种容器适配器的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。