c++中容器(STL)的共性与使用的时机
容器的共通能力
C++模板是容器的概念
理論提高:所有容器提供的都是值(value)語意,而非引用(reference)語意。容器執(zhí) 行插入元素的操作時,內(nèi)部實施拷貝動作。所以 STL 容器內(nèi)存儲的元素必須能夠被拷貝(必 須提供拷貝構(gòu)造函數(shù))。
除了 queue 與 stack 外,每個容器都提供可返回迭代器的函數(shù),運用返回的迭代器就可以訪問元素。
通常 STL 不會丟出異常。要求使用者確保傳入正確的參數(shù)。
每個容器都提供了一個默認構(gòu)造函數(shù)跟一個默認拷貝構(gòu)造函數(shù)。
如已有容器 vecIntA。
vectorvecIntB(vecIntA); //調(diào)用拷貝構(gòu)造函數(shù),復制 vecIntA 到 vecIntB 中。
與大小相關(guān)的操作方法(c 代表容器): c.size(); //返回容器中元素的個數(shù) c.empty(); //判斷容器是否為空
比較操作(c1,c2 代表容器):
c1==c2 判斷 c1 是否等于 c2 c1!=c2 判斷 c1 是否不等于 c2c1=c2 把 c2 的所有元素指派給 c1各個容器的使用時機
vector的使用場景:比較軟件歷史操作記錄的存儲,我們經(jīng)常要查看歷史記錄,比如上一次的記錄,上上次的記錄,但卻不會去刪除記錄,因為記錄是事實的描述
deque的使用場景:比如排隊購票系統(tǒng),對排隊的存儲可以采用deque,支持頭端的快速移出,尾端的快速添加,如果采用vector,則頭端移出時,會移動大量的數(shù)據(jù),速度慢
vector與deque的比較
1 vector.at()比deque.at()效率高,比如vector.at(0)是固定的,deque的開始位置是不固定的2 如果有大量釋放操作的話,vector花的時間更少,這跟二者的內(nèi)部實現(xiàn)有關(guān)3 deque支持頭部的快速插入與快速移出,這是deque的優(yōu)點list 的使用場景:比如公交車乘客的存儲,隨時可能有乘客下車,支持頻繁的不確實 位置元素的移除插入。
set 的使用場景:比如對手機游戲的個人得分記錄的存儲,存儲要求從高分到低分的 順序排列。
map 的使用場景:比如按 ID 號存儲十萬個用戶,想要快速要通過 ID 查找對應(yīng)的用 戶。二叉樹的查找效率,這時就體現(xiàn)出來了。如果是 vector 容器,最壞的情況下可 能要遍歷完整個容器才能找到該用戶
總結(jié)
以上是生活随笔為你收集整理的c++中容器(STL)的共性与使用的时机的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 康佳电视的卖点主要是什么?
- 下一篇: c++中利用STL实现公司员工分组问题