C++的三种容器适配器
                                                            生活随笔
收集整理的這篇文章主要介紹了
                                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); //在棧頂壓入新元素item2.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++的三种容器适配器的全部內容,希望文章能夠幫你解決所遇到的問題。
 
                            
                        - 上一篇: java的servlet是干嘛的_Ser
- 下一篇: php168为什么抛弃重新开发x1,在今
