9.2 库容器概览
9.2.2 容器类型成员
- 容器的额外操作:iterator表示迭代器类型,size_type无符号整型,value_type指元素类型,reference与value_type&等价。
9.2.4 容器定义和初始化
- 用容器的拷贝初始化另一个容器:为了创建一个容器为另一个容器的拷贝,两个容器的类型及元素类型必须匹配。不过,当传递迭代器参数来拷贝一个范围时,就不要求容器类型和元素类型是相同的了。
- 与顺序容器大小相关的构造函数:如果元素类型是内置类型或者具有默认构造函数的类类型,可以值为构造函数提供一个容器的大小参数,否则,还必须制定一个显式的元素初始值。
- 用大小初始化:只有顺序容器的构造函数才接受大小参数,关联容器不支持。
4.array:具有固定大小,列表初始化的数目必须等于或小于array的大小;花括号列表只能初始化不能赋值。
9.2.5 赋值与swap
- array:具有固定大小,允许赋值,但是赋值号左右两边的运算对象必须具有相同类型,列表初始化的数目必须等于或小于array的大小;花括号列表只能初始化不能赋值。
array<int,3> a1={1,2,3}
array<int,3> a2={0};
a1=a2; //正确,替换a1中的元素
a2={0}; //错误,不能讲一个花括号列表赋予数组 - assign:仅顺序容器支持,传递给assign的迭代器不能指向调用assign的容器;会导致指向容器的迭代器、引用、指针失效。允许我们从一个不同但相容的类型赋值,或则从容器的一个子序列赋值。
- swap:除array外,swap不对任何元素进行拷贝、删除、插入,可保证常数时间完成;除string外,指向其他容器的迭代器、引用、指针在swap后都不会失效。(实质上就是交换了容器所指向的地址,类似于交换指针内容)
9.2.7 关系运算符
- 关系运算符:两边的运算对象必须是相同的容器类型,且保存相同类型的元素。容器的关系运算符使用元素的关系运算符完成比较。