【C++ Primer】第9章 顺序容器
来源:互联网 发布:义乌淘宝招聘信息 编辑:程序博客网 时间:2024/05/21 21:40
第9章 顺序容器
顺序容器的定义
所有的容器都是类模版
容器元素的初始化
l 初始化为另一容器的副本
l 初始化为一段元素的副本
l 分配和指定数目的元素
容器元素类型必须满足两个约束
l 必须支持赋值
l 对象必须可以复制
所有引用类型就被排除了,它不支持一般意义的赋值运算
容器的容器vector< vector<string> > lines,必须将两个>隔开,否则系统会以为>>是单个符号
迭代器
vector和deque的迭代器都提供额外的算术运算,关系操作符也只适用于vector和deque
list的迭代器不支持算术运算,也不支持关系运算
迭代器的end或last是指向最后元素的下一位置[first, last)
使用左闭合区间的意义
l 当first与last相等,迭代器为空
l first与last不等,至少有一个元素
修改容器的内在状态或者移动容器的元素,会使指向容器的迭代器失效(此处有问题,vector会,但list不会)
无法检查迭代器是否有效或失效
顺序容器的操作
由容器定义的类型别名:size_type, iterator, const_iterator, reverse_iterator, difference_type, value_type, reference, const_reference
list<string>::iterator iter; //iter is the iterator type defined by list<string>
c.begin()、c.end()、c.rbegin()、c.rend(),如果容器不是const,则返回Iterator或reverse_iterator, 否则返回const_前缀
添加元素:所有的容器都支持push_back,push_front, insert。容器元素都是副本
所有的容器类型都支持关系操作符的比较,但必须有相同的容器类型,其元素类型也必须相同
容器的比较类似于string类型的关系运算
l 长度相等,所有元素相等,则容器相等
l 长度不等,较短的容器中所有元素都等于较长容器中对应的元素,小于
l 如果两个容器都不是对方的初始子序列,则比较结果取决于第一个不相同的元素
容器大小的操作:size, max_size, empty, resize,
访问元素:front, back , c[n], c.at(n)
删除元素:erase, clear, pop_back, pop_front,后两者的返回值不是删除的元素,而是void
erase删除由迭代器指向的一个或一段元素,它也不会检查它的参数
赋值与swap:等号、swap、assign(重设),赋值和assign会使左操作数容器的迭代器失效,swap不会
assign操作会首先删除容器中的所有元素,然后将其参数指定的新元素插入到该容器
vector自增长
vector类提供了两个成员函数:capacity和reserve,capacity操作获取在容器需要分配更多的存储空间之前能够存储的元素总数,reserve告诉容器应该预留多少个元素的存储空间
size指的是容器当前拥有的元素个数
vector的每种实现都可以自由选择内存分配策略
容器的选用
插入、删除、访问等操作影响容器的选取
当然,也可以搭配使用
再谈string
string提供了容器操作,可以像操作vector一样操作string
string不支持带有单个容器长度作为操作的构造函数
char no_null = {‘H’, ‘I’};
string s(no_null); // runtime error: not null-terminated
string的比较:关系操作符、compare函数
容器适配器
三种顺序容器适配器:queue、priority_queue、stack
stack和queue基于deque实现,priority_queue基于vector实现
- 【C++primer学习笔记】第9章 顺序容器
- 《C++Primer》读书笔记——第9章 顺序容器
- c++ primer 第9章 顺序容器
- 《C++ primer》第9章 顺序容器
- 【C++ Primer】第9章 顺序容器
- C++ primer | 第9章 顺序容器
- 《C++ Primer》第9章:顺序容器
- C++primer第4版第九章顺序容器
- C++Primer第五版 第9章 顺序容器(练习解答)
- 《C++primer》 顺序容器
- C++Primer 顺序容器
- 《c++ primer》 第9章 顺序容器 学习笔记
- C++ Primer学习总结 第9章 顺序容器
- 【c++ primer读书笔记】【第9章】顺序容器
- C++ Primer 第9章 顺序容器 第一次学习笔记
- 《C++ Primer》学习笔记 第9章:顺序容器
- c++primer第九章顺序容器 小结--9
- C++primer 第九章:顺序容器----字符串
- 修改全志A10 开机第一屏logo
- Fiddler (二) Script 用法
- 【C++ Primer】第8章 标准IO库
- Fiddler (三) Composer创建和发送HTTP Request
- Linux下socket网络编程详解
- 【C++ Primer】第9章 顺序容器
- NYOJ 169题 素数
- 走弯路,才是人生的常态
- 【C++ Primer】第10章 关联容器
- 使用block遍历数组成员的方法
- 工具CocosBuilder的使用--复杂动画
- 【C++ Primer】第11章 泛型算法
- hdu 题目1556 Color the ball(线段树)
- 【C++ Primer】第12章 类