1.主要内容:
2. 使用using
声明符方便直接使用在命名空间中的实体:
,一些注意事项:
3. 使用字符串字面量初始化时string 对象不会包含'\0'
字符:
4. companion types -- string::size_type
:
5. 对于类型string
而言,operator+
要求至少有一个操作数类型为string
:
6. using the C++ versions of C Library headers:
7. 如果想要使用range for statement
来修改容器:
8. 对于vector
而言,不可在range for
中改变其size
:
9. 对于string
类型而言,如果遍历所有字符,则用range for
,如果只访问部分字符,则用下标操作符[] operator
和iterator
:
10. 使用下标,程序员需要保证下标值在范围内:
11. class template -(instantiation)- > class -(create an entity)-> object:
12. list initialize:
爆红但能运行:
13. 多用empty vector
而非固定的size
:
14. vector取下标操作operator[]
,其无法代替新增push_back()
操作,同时多用range for
而不是operator[]
:
15. 在library container中,iterators
比subscript operator
(operator []
)更加通用:
16. iterator类型是什么不重要,我们可以通过auto
关键字推导:
- 在容器中使用迭代器时使用
!=
/==
而非<
的原因是为了泛化考虑: - nonconst容器的常规迭代器是iterator类型,反之具有const_iterator类型:,对于iterator到底是
iterator
还是const_iterator
类型,在begin()
和end()
我们可以手动指定: - 通常
(*it).item
等价于it->item
: - build-in array is a compound type:
- 字符数组可以用字符串常量进行初始化,这是因为C里面没有专门的type来存储字符串常量:,包括C++中的string也支持字符串常量和字符数组进行初始化。
- 数组可以由大多数类型的对象组成,此外因为数组本身也是一个对象,所以我们可以定义指向数组的指针以及数组引用:
- 在大部分情况下,在表达式中使用数组名时,编译器会自动将其转化成数组中第一个元素的地址:
- 严格来讲,没有多维数组这个type,只有数组的数组的 . . .: