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

手機站
千鋒教育

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

千鋒教育

掃一掃進入千鋒手機站

領取全套視頻
千鋒教育

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

當前位置:首頁  >  技術干貨  > 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
久久亚洲中文字幕精品一区四,亚洲日本另类欧美一区二区,久久久久久久这里只有免费费精品,高清国产激情视频在线观看
亚洲欧美另类图片区综合区 | 亚洲字字幕在线中文乱码 | 日韩欧美一区二区3D视频 | 亚洲人碰在线视频 | 热久久国产欧美一区二区精品 | 亚洲成a人片在线观看专区 在线观看AV中文字幕不卡 |