前言
顺序容器和关联容器
顺序容器: vector之类的按序索引的容器
关联容器:map等按键索引的容器
容器库概览
将一个容器初始化为另一个容器的拷贝
- C c1(c2); C c1 = c2; 两种容器类型和元素类型都必须相同
- C c(beg, end); 不要求容器类型一致,甚至元素类型可以转换时,元素类型也可以不一样。
swap和assign
前者必须是两个相同类型的容器
后者则无需
tips:使用非成员函数版本的swap是一个好习惯,在泛型编程中十分钟重要。
容器的比较
必须在元素定义了关系运算符时才能进行比较
元素优先比较,元素按顺序比较完成后未比较出结果的话再比较大小
顺序容器操作
添加元素
vector string 和 deque插入元素会使得所有的迭代器,引用和指针失效,。这是因为整个对象存储空间的重新分配。同时,这样的操作也会很慢。可以使用返回值来更新迭代器.
- 插入元素时都是插入在迭代器之前的
- insert返回指向新元素的迭代器。
- emplace是一个新操作,无需新建元素的对象再压进去,可以直接在容器管理的内存空间当中直接创建对象。这个操作甚至还可以调用默认构造函数。
适配器暂时没看太懂,之后再回来看