日韩欧乱色一区二区三区在线_久久―日本道色综合久久_欧美日本一区二区_网曝91综合精品门事件在线

千鋒教育-做有情懷、有良心、有品質的職業教育機構

手機站
千鋒教育

千鋒學習站 | 隨時隨地免費學

千鋒教育

掃一掃進入千鋒手機站

領取全套視頻
千鋒教育

關注千鋒學習站小程序
隨時隨地免費學習課程

當前位置:首頁  >  技術干貨  > vector, list, map等容器使用場合是什么?

vector, list, map等容器使用場合是什么?

來源:千鋒教育
發布人:xqq
時間: 2023-10-13 01:39:53 1697132393

一、vector, list, map等容器使用場合

vector適用于對象簡單,變化較小,并且頻繁隨機訪問的場景。list適用經常進行插入和刪除并且不經常隨機訪問的場景。map主要用于資料一對一映射的情況,map內部自建一棵紅黑樹,這棵樹具有對數據自動排序的功能。以在map內部所有的數據都是有序的。比如一個班級中,每個學生的學號跟他的姓名就存在著一對一映射的關系。

list封裝鏈表,以鏈表形式實現,不支持[]運算符。對隨機訪問的速度很慢(需要遍歷整個鏈表),插入數據很快(不需要拷貝和移動數據,只需改變指針的指向)。新添加的元素,list可以任意加入。vector封裝數組,使用連續內存存儲,支持[]運算符。對隨機訪問的速度很快,對頭插元素速度很慢,尾插元素速度很快新添加的元素,vector有一套算法。map采用平衡檢索二叉樹:紅黑樹存儲結構為鍵值對

延伸閱讀:

二、vector的內存管理與效率

當元素需要插入且容器的容量不足時會發生重新分配。這會導致vector的原始內存分配和回收、對象的拷貝和析構和迭代器、指針和引用的失效。
問題產生的原因:vector容器分配的是一塊連續的內存空間,每次容器的增長,并不是在原有連續的內存空間后再進行簡單的疊加,而是重新申請一塊更大的新內存(一般是當前大小的1.5~2倍的新內存區),并把現有容器中的元素逐個復制過去,同時銷毀舊的內存。
問題解決方法
提前使用reserve()函數設定容器大小,在vector操作的末尾添加vector().swap(v)來修正過剩的空間或內存。

聲明:本站稿件版權均屬千鋒教育所有,未經許可不得擅自轉載。
10年以上業內強師集結,手把手帶你蛻變精英
請您保持通訊暢通,專屬學習老師24小時內將與您1V1溝通
免費領取
今日已有369人領取成功
劉同學 138****2860 剛剛成功領取
王同學 131****2015 剛剛成功領取
張同學 133****4652 剛剛成功領取
李同學 135****8607 剛剛成功領取
楊同學 132****5667 剛剛成功領取
岳同學 134****6652 剛剛成功領取
梁同學 157****2950 剛剛成功領取
劉同學 189****1015 剛剛成功領取
張同學 155****4678 剛剛成功領取
鄒同學 139****2907 剛剛成功領取
董同學 138****2867 剛剛成功領取
周同學 136****3602 剛剛成功領取
相關推薦HOT
主站蜘蛛池模板: 沧源| 襄樊市| 华安县| 江山市| 沈阳市| 铁岭市| 五寨县| 霍邱县| 甘泉县| 沐川县| 玛沁县| 玉屏| 崇礼县| 革吉县| 剑河县| 临沂市| 驻马店市| 南丰县| 遂昌县| 新源县| 望城县| 蒙自县| 崇明县| 穆棱市| 万全县| 潞城市| 岳阳市| 鄂尔多斯市| 晋城| 灌云县| 石家庄市| 乐清市| 纳雍县| 玛沁县| 汉寿县| 建水县| 广丰县| 三穗县| 大庆市| 石渠县| 尚志市|