第一條 慎重選擇容器型別

2021-08-16 22:05:25 字數 1222 閱讀 6989

1.標準stl序列容器:vector,string,deque,list;

2.標準stl關聯容器:set,multiset,map,multimap;

3.非標準序列容器:slist,rope;slist是乙個單向鍊錶,rope本質上是乙個「重型」string

4.非標準的關聯容器:hash_set,hash_multist,hash_map,hash_multimap;

5.vector < c h a r> 作為string的替代;

6.vector作為標準關聯容器的替代

7.如何在vector,list,deque中做出選擇這裡

8.標準的連續記憶體容器有:vector,string,deque;非標準的rope也是連續記憶體的容器;

9.基於節點的容器在每乙個記憶體中只存放乙個元素;如list,slist都是基於節點實現的,所有標準的關聯容器也是如此,(通常的實現方式是平衡樹)。非標準的雜湊容器使用不同的基於節點的實現。

10.在容器的任意位置插入元素,選擇序列容器,關聯容器不行。

11.如果不關心容器中的元素是排序的,雜湊容器是乙個可行的方案,否則,避免使用雜湊容器

12.如果選擇的容器必須是標準c++的一部分,就排除雜湊容器,slist,rope

13.如果迭代器必須是隨機訪問迭代器,則對容器的選擇就被限定為vector,deque,string;或許你也可以考慮rope,如果使用雙向迭代器,那你必須避免slist及雜湊容器的乙個常見實現。

見第五十條和第二十五條

14.容器中資料的布局是否與c相容,如果是的話,選擇vector

15.元素的查詢速度如果是關鍵因素,考慮雜湊容器(25條),排序的vector(23條),標準關聯容器———也許這就是優先順序。

16.如果容器內部使用了引用計數技術,就要避免使用string,因為許多string的實現都是用引用計數,rope也要避免,因為權威的rope是基於引用計數的,

當然,你可以考慮.vector < c h a r>

17.在標準容器中,只有list對多個元素的插入操作提供了事務語義

所謂事務語義就是在插入和刪除操作失敗後,需要回滾的能力。

18.基於節點的容器不會是迭代器,指標和引用變為無效,而對連續記憶體容器相反

19.string在stl中swap過程會導致迭代器,指標,引用,變為無效的唯一容器,

20.deque是唯一的,迭代器可能變成無效而指標和引用不會變成無效的stl標準容器

慎重選擇容器型別

慎重選擇容器型別 一 回顧c 提供的容器 標準的stl序列容器 vector string deque和list。標準的stl關聯容器 set multiset map和multimap。非標準序列容器 slist 和rope。非標準的關聯容器 hash set hash multiset hash...

慎重選擇容器型別

慎重選擇容器型別 一 回顧c 提供的容器 標準的stl序列容器 vector string deque和list。標準的stl關聯容器 set multiset map和multimap。非標準序列容器 slist 和rope。非標準的關聯容器 hash set hash multiset hash...

慎重選擇容器型別

一 容器分類 1 標準的stl序列容器 vector string deque和list。2 標準的stl關聯容器 set multiset map和multimap 3 非標準序列容器 slist和rope。4 非標準的關聯容器 hash set hash multiset hash map和ha...