第9章 顺序容器
1. 顺序容器如果有一个只需要容器大小参数的默认构造函数,该函数使用的是元素的默认构造函数来构造每个元素对象,如果该容器的元素没有默认构造函数,那么就不能使用这个容器的该构造函数P294:
2. 容器进行拷贝初始化时,两个容器的元素必须同类型.
但是如果列表初始化,或迭代器范围初始化容器,那么只要求列表中元素或迭代器所指元素可以转化为容器的元素即可.
3. 容器类型可以直接通过=号赋值(包括array容器数组类型):
注意:assign仅适用于顺序容器(但不适用于array)
4. 两个容器进行==或!=比较,用的是元素的==运算符.它们进行>或<比较,用的是元素的<运算符,所以如果元素没有定义这两种运算符或者这两种运算符不是public的,那么将不能比较:
5. 顺序容器(除array)都支持insert(P307),下面是insert的用法:
使用insert的返回值: insert()返回它插入的第一个元素的迭代器.
6. 使用emplace操作:
7. 除forward_list外,其他顺序容器都支持front()和back()操作,不过P311书本上说它们返回引用,但是我测试结果却并非如此,问题在哪里?
再看下面另一种方式:
说明front()和back()确实返回引用,但是auto没有正确的解析类型.
at操作也返回引用哦.
8. vector删除元素P311-312
9. resize()操作支持除array外的所有顺序容器,它既可以增加元素也可以减少容器的元素,如果删除元素,可能导致被删除元素的迭代器,指针,引用失效:
10. string的添加字符,删除字符操作: P322
11. 使用resize()增大容器并不会改变容器里原有元素的值:
原文地址:http://blog.csdn.net/u013480600/article/details/44150691