Effective STL 第1条:慎重选择容器类型
其实如果了解了容器内部原理,就很好选择容器了。这个条款也只是依据容器的特性来谈的。
c++提供的容器
- 标准STL序列容器:vector、string、deque和list
- 标准STL关联容器:set、multiset、map和multimap
- 非标准序列容器:slist和rope
- 非标准关联容器:hash_set、hash_multiset、hash_map和hash_multimap
- vector<char>对string的替代
- vector对标准关联容器的替代
- 标准非STL容器:bitset、valarray、stack、deque和priority_queue
如何选择序列容器:频繁的插入和删除用list,插入和删除在尾部用deque,其他用vector
在选择容器时考虑的一些问题
- 是否需要在任意位置插入元素,是的话就不能用关联容器
- 如果不关心容器的排序位置可以用hash容器
- 是否一定要用标准库的容器,是的话就没有slist,rope和hash容器了
- 在删除和插入的时候,移动数据是否很重要。如果是建议不要用连续内存的容器
- 是否需要兼容c的布局,如果是就只能用vector
- 利用容器查找时,速度是否很重要。如果是建议优先hash,其次排序的vector,最后关联容器。
- 是否介意引用计数技术:是的话就不能用string和rope
还有一些考虑的等后面用到了再补充

浙公网安备 33010602011771号