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

还有一些考虑的等后面用到了再补充

posted @ 2021-06-22 16:34  Destiny233  阅读(75)  评论(0)    收藏  举报