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

歡迎訪問 生活随笔!

生活随笔

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

c/c++

c++中容器(STL)的共性与使用的时机

發(fā)布時間:2023/11/30 c/c++ 42 豆豆
生活随笔 收集整理的這篇文章主要介紹了 c++中容器(STL)的共性与使用的时机 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

容器的共通能力

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 容器,最壞的情況下可 能要遍歷完整個容器才能找到該用戶

  • 創(chuàng)作挑戰(zhàn)賽新人創(chuàng)作獎勵來咯,堅持創(chuàng)作打卡瓜分現(xiàn)金大獎

    總結(jié)

    以上是生活随笔為你收集整理的c++中容器(STL)的共性与使用的时机的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。