条款1:仔细选择你的容器
来源:互联网 发布:淘宝盗图申诉100成功 编辑:程序博客网 时间:2024/06/01 23:22
vector, deque和list中进行选择的指导:vector, list 和 deque 为程序员提供不同的复杂度平衡,应权衡使用。vector 是序列式容器,作为缺省使用。List应当用于频繁在序列中部进行插入和删除操作的情况。当大多数插入和删除操作发生在序列的头和尾时请选择deque。
连续内存容器(contiguous-memory containers)(也叫做基于数组的容器(array-based containers))在一个或多个连续的内存块(动态分配的)存贮它们的元素,任一内存块容纳多于一个的容器元素。如果一个新元素被插入(inserted)或一个存在的元素被擦除(erased),在同一内存块中其它元素必须搬移为新元素提供空间或回收已擦除元素所占用的空间。这种移动会影响性能(见条款5和14)和异常安全(不久我们就会看到)。标准的连续内存容器(contiguous-memory containers)是vector,string和deque。非标准的rope也是一种连续内存容器(contiguous-memory containers)。
基于节点的容器(node-based containers)在每一个内存块(动态分配的)内只存贮一个单独元素。插入和擦除(erasure)只影响指向节点的指针,不影响节点本身的内容,所以执行插入或擦除操作时元素值不需要移动(意思是不需要移动内存块)。表示链表的容器如list和slist,以及所有的关联式容器都是基于节点(node-based)的。(它们一般都用平衡树实现。)非标准的散列容器(hashed containers)使用各种基于节点(node-based)的实现,请见条款25。
什么是“散列容器”?
- 条款1:仔细选择你的容器
- 条款1:仔细选择你的容器
- 条款1:仔细选择你的容器
- 条款1:仔细选择你的容器
- Effective STL 条款1:仔细选择你的容器 (连载)
- effect stl 条款1 仔细选择你的容器
- Effective STL 条款1:仔细选择你的容器
- 仔细选择你的容器
- 仔细选择你的容器(STL)
- Effecective STL: 容器 (条款1: 小心选择你的容器)
- 学习Effective STL——仔细选择你的容器
- 仔细选择合适的STL容器
- 条款9:在删除选项中仔细选择
- 条款1:仔细区别Pointers和References
- 条款1:仔细区别pointers和references
- 基础议题 条款1:仔细区别pointer和reference
- 推荐你仔细品味的文章
- 为你的Android程序选择合适的数据容器
- ext
- 4.39节图4-220的仓储地点为什么不能选择呢?
- 无法启动DHCP CLient服务,错误 5
- 422转420 并 从YUV转RGB
- JSON和XML的区别浅析
- 条款1:仔细选择你的容器
- 报表故障排除:报表性能
- 外键级联删除
- 开源多媒体框架
- Hibernate 的关系映射4 One2One
- 【转】为什么我们总是比别人钱少
- Mobile Media API(MMAPI)
- 面试题
- 理解ASP.NET中的三层中的DAL、BLL和USL