c++ stl 标准库容器的选择原则(图)

来源:互联网 发布:如何修改手机的mac地址 编辑:程序博客网 时间:2024/04/27 23:31

1、缺省情况下使用vector,提供最简单的内部数据结构和随机访问能力,数据处理一般足够快了
2、如果在一个序列的两端经常增删元素,你应该使用deque,且如果你希望容器在元素删除后空间也减少,你也应该用deque,且相对于vector只使用一个内存block,deque使用了多块内存block,因此具有更强的存储扩展能力
3、如果你在一个容器中间增删改频繁,那就使用List,但是由于不提供随机访问,所以对访问元素的性能还是有影响
   list修改后不会影响引用、指针、迭代器,而vector只要超过capacity就使得所有指针失效,vector在插入和删除的时候使得部分指针失效
4、如果你希望一个容器处理操作的时候要么成功,要么不操作(不抛出异常),则可以使用List或者关联容器。
5、如果你经常需要进行搜索(按照一定的规则),使用set/multiset,因为他们使用了二叉树,hashtable具有比二叉树更加高效的搜索机制,所以尽量使用hashtable,但是hashtable不能排序,所以在需要排序且高效搜索的场合还是用set,
6、处理key/value的时候使用map/multimap
7、如果需要字典,使用multimap