條款1 仔細選擇你的容器

2021-08-03 18:43:35 字數 698 閱讀 2636

分類:

標準stl序列容器:vector、string、deque 和list。

標準stl關聯容器:set、multiset、map 和multimap。

非標準序列容器:slist和rope。

非標準關聯容器:hash_set、hash_multiset、hash_map和hash_multimap。

標準非stl容器:陣列、bitset、valarray、queue和priority_queue。

分類:

連續記憶體容器(也叫做基於陣列的容器):在乙個或多個(動態分配)的記憶體塊中儲存它們的元素。如果乙個新元素被插入或刪除已存在的元素,其他在同乙個記憶體塊的元素必須移動來騰出空間或是填充空間。影響效率和異常安全。

包括有:vector、string 和deque; rope

基於節點的容器:在每個記憶體塊(動態分配)中只儲存乙個元素。元素的插入和刪除只影響指標不影響內容,其他元素之不需要移動。

包括:list、slist 、set 、multiset 、map 、multimap

而非標準的雜湊容器使用不同的基於節點的實現

關於容器的選擇問題:

—————————-整理自《effective stl》

條款9 在刪除選項中仔細選擇

假定你有乙個標準stl容器,c,容納int,containerc 而你想把c中所有值為1963的物件都去掉。令人吃驚的是,完成這項任務的方法因不同的容器型別而不同 沒 有一種方法是通用的。見條款32 c.erase remove c.begin c.end 1963 當c是vector string...

你問我答 容器篇(1)

數位化時代,數字經濟帶來的巨大優勢,讓企業不斷向數位化轉型邁進,企業在it基礎設施建設 混合多雲管理等領域面臨迫切的轉型與公升級,並在這一過程中遇到較多問題與難題。作為國內支撐企業數位化轉型的雲計算paas技術中颱及多雲管理服務商,博雲時刻關注並深入了解企業it建設的需求。以下是本週問題精選 1 容...

STL容器的選擇

標準stl序列容器 vector string deque和list。標準stl關聯容器 set multiset map和multimap。非標準序列容器slist和rope。slist是乙個單向鍊錶,rope本質上是乙個重型字串。繩子 rope 是重型的 線 string 明白了嗎?你可以找到乙...