《C++程式設計語言(第4部分:標準庫)》
31.4 容器
31.4.1 vector
31.4.1.1 vector和增長
- 重要知識點:vector的記憶體布局
- vector不會在添加每個元素時都分配記憶體,而是在超出容量時才進行一次重新分配,
- C++標準并未指定超出容量時向量的增長幅度,但很多C++實作都是增加大小的一半
- 容量的概念令指向vector元素的迭代器只有在真正發生重分配時才會實作
31.4.1.1 vector和嵌套
- vector的優勢
- vector的元素是緊湊存盤的:所有元素都不存在額外的記憶體開銷
- vector的遍歷非常快
- vector支持簡單高效的隨機訪問 - 考慮二維矩陣的存盤,對比以下兩種解決方案,可見資料結構緊湊存盤的重要性:
- 使用vector<vector>:需要進行多次自由存盤空間的分配,訪問元素需要進行二次間接尋址
- 使用vector:僅需要一次自由存盤空間的分配,訪問元素僅需要進行一次間接尋址
31.4.1.3 vector和陣列(或array)
- 內置資料(或array)可將資料存盤在堆疊上,對比vector存盤在自由存盤空間,存在一定性能上的優勢
- 在允許使用未初始化元素的情況下,使用內置資料(或array)可能更優(如從標準輸入讀取資料存盤到陣列元素中)
31.4.1.4 vector和string
- vector是一種保存值的通用機制,并不對保存的值之間的關系做任何假設
- string設計的目的就是保存字符序列,它認為字符之間的關系非常重要
問題串列
- vector與陣列的區別:C++中陣列和vector
- vector在插入和洗掉時需要注意什么
- 插入資料時,由于記憶體可能會進行重分配,那么插入資料前保存的迭代器可能會失效
- 洗掉資料后,記憶體并不會回收,只是將需要洗掉的元素覆寫
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/169927.html
標籤:其他
下一篇:JVM系列【5】JVM常用指令
