《C++ Primer》读书笔记——第九章_顺序容器
2016-09-25 16:44
387 查看
《C++ Primer》读书笔记——第九章_顺序容器
标签(空格分隔): 未分类一个容器就是一些特定类型对象的集合。顺序容器(sequential container)为程序员提供了控制元素存储和访问顺序的能力。这种顺序不依赖于元素的值,而是与元素加入容器时的位置相对应。与之相对的是11章的有序和无序关联容器,它们根据关键字的值来存储元素。
与容器对应的是适配器,他们为容器操作定义了不同的接口,来与容器类型适配。
9.1 顺序容器概述
所有顺序容器都提供了快速顺序访问元素的能力。
vector 可变大小数组。支持快速随机访问,在尾部之外的位置插入或删除元素可能很慢。 deque 双端队列。支持快速随机访问。在头尾位置插入/删除速度很快。 list 双向链表。只支持双向顺序访问。在list中任何位置插入/删除都很快 forward_list 单向链表。只支持单项顺序访问。在链表任何位置进行插入/删除操作都很快。 array 固定大小数组。支持快速随机访问。不能添加或删除元素。 string 与vector相似的容器,但专门用于保存字符。随机访问快。在尾部插入/删除速度快。
除了array外,其他容器都提供高效、灵活的内存管理。
string和vector将元素保存在连续的内存空间中。因为连续,所以下标访问非常快。但在中间插入、删除较慢(O(n))。有时添加一个元素还可能需要分配的额外空间,这种情况所有元素必须移动到新的存储空间中
forward_list和array是新C++标准增加的类型。array比内置数组更安全。forward_list没有size()操作。新标准库的容器比旧版本的快得多。详见P470.
1.一般用vector。 2.如果程序有很多小元素,且空间的额外开销很重要,则不要用list或forward_list。 3.要随机访问元素用vector或deque。 4.如果要在中间插入元素,应用list或forward_list。 5.如果要在头尾插入元素。但不会在中间插入元素,用deque。 6.如果程序只有在读取输入的时候才需要在容器中间位置插入元素,随后需要随机访问元素。如果确实需要,则考虑在输入阶段用list,一旦输入完成,将list中的元素拷贝到一个vector中。
forward_list不支持递减操作。因为是单向链表。
一个迭代器范围由一对迭代器表示,begin和end或者first和last表示。但end和last从来不指向范围中最后一个元素,而是指向尾元素之后的位置。这种元素范围成为【左闭合区间】。数学描述为[first, last), [begin, end)。
相关文章推荐
- 读书笔记《C++ Primer》第五版——第九章 顺序容器
- 《C++ Primer》读书笔记第九章-1- 顺序容器概述 And 容器库概览
- 《C++ Primer》读书笔记-第九章 01 顺序容器
- 《C++ Primer》读书笔记第九章-2-顺序容器操作 And vector增长问题
- c++ primer 读书笔记 第九章 顺序容器有那些 vector list deque stack queue priority-queue
- 《C++ Primer》读书笔记-第九章 03 顺序容器操作
- C++ primer 读书笔记 第九章 顺序容器
- C++ Primer 第四版读书笔记(八)之顺序容器
- 【C++ Primer】【学习笔记】【第九章】顺序容器之:vector容器的自增长
- C++ primer 读书笔记系列——(6)顺序容器(三)之再谈string类型和容器适配器
- 顺序容器 - 3【C++ Primer 学习笔记 - 第九章】
- C++ Primer复习和学习笔记 第九章 顺序容器
- 读书笔记:C++ primer 5th edition--chapter9.顺序容器
- 【C++ Primer】【学习笔记】【第九章】顺序容器之:迭代器和迭代器范围
- C++ Primer 4 第九章 顺序容器
- C++ primer 读书笔记系列——(6)顺序容器
- C++ Primer 读书笔记: 第9章 顺序容器
- 实验测试2《C++ Primer》第五版——第九章 顺序容器
- c++ primer(第五版)笔记 第九章 顺序容器(1)
- 《C++ Primer》第九章 顺序容器