条目1《慎重选择容器类型》

Posted liangjf

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了条目1《慎重选择容器类型》相关的知识,希望对你有一定的参考价值。

条目一主要是先抛出选择STL容器时面对的问题,并且从中简单的对各个容器做个分类和使用对比。

在选择stl容器类型的时候,一般需要从以下的角度来考虑选择对象:

  • 1.元素的排序情况
  • 2.是否与标准相符
  • 3.迭代器的能力
  • 4.元素布局与C的兼容性
  • 5.查找速度
  • 6.因引用计数数所引起的反常行为
  • 7.是否便于实现事务语义
  • 8.迭代器在何种条件下变为无效
  • 9.算法复杂度

除了标准和非标准容器分类外,不引起人关注的分类方法有根据容器在内存中的存储方式是否连续来分类。基于连续内存的有string,vector,queue。基于非连续内存存储(内存块)的有list,slist和关联容器(树状结构,一般是平衡树)。

根据内存是否连续的分类有些情况是比较看中的,因为连续内存存储方式,在插入和删除数据时会引起大量的数据搬移工作,而节点存储方式没有这种情况。

STL包含了标准和非标准的容器,在选择的时候需要注意,是要一定要标准的。因为不标准的在移植的时候可能会存在兼容性问题。

在编写多进程和多线程等程序时,并不是所有的STL容器都可以选择的,因为有的容器不是线性安全的,存在数据并发竞争问题。在实际工作中,不应该因为这点而抛弃STL标准库而统一自己造轮子,这是不可取的。而是应该采取慎重考虑,对比选择,选择合适自己的,实在没办法再造轮子!把累活脏活丢给“大牛们”。

以上是关于条目1《慎重选择容器类型》的主要内容,如果未能解决你的问题,请参考以下文章

Effective STL第1条:容器之(慎重选择容器类型)

《Effective STL》阅读笔记

《Effective STL》阅读笔记

条目五《尽量使用区间成员函数代替它们的单元素兄弟》

慎重选择删除元素的方法

Effective STL 读书笔记