C++ Primer Chapter 9-1

来源:互联网 发布:安卓备份软件 编辑:程序博客网 时间:2024/06/11 08:59
1:对于容器的选择要综合考虑性能和操作主导

2:对于容器 vector 的带一个参数的构造函数,该构造函数会调用 vector 中元素的默认构造函数,这时候如果该元素类型没有默认构造函数的话,就会出错。这就是容器 vector 对其内存储的元素限制。

3:容器中的迭代器还有反向的迭代器

4:构成迭代器的范围要求,end必须不能在begin之前,并且要指向同一个容器

5:再输出流中发现了:如果按住 Ctrl + Z 后单独使用了 cin.clear() 是不够的,还要继续使用 cin.sync() 。这时因为即使 cin 流对象的状态改变了,但是缓存中的数据是停留在了文件结尾,所以在此输入的cin语句是不会被调用的,只有清除缓存区 cin.sync() 之后才可以解决该问题。

6:在创建一个容器时,利用另外一个容器的迭代器参数拷贝一个范围时就可以不用容器类型相同,元素类型只要可以向创建的容器元素转换就可以了。、

7:在创建容器时,如果元素类型没有默认构造函数,在指定容器大小时必须指定元素的默认值

8:array容器创建时需要指定元素类型还得指定array的大小。array<int,42>   arr;   大小是array的一部分

9:array 容器中的元素必须有默认构造函数

10:内置类型数组不能够拷贝或者对象赋值,但是array对象不存在该种性质。

11:array 不允许花括号列表赋值

12 :赋值相关操作会导致左边的对象内部迭代器指针失效,而swap 操作不会,当然 array 和 string 除外。page302

13:assign 函数是用来把调用对象元素替换成assign中参数指定的元素(只要求元素相容)

14:容器的 swap 函数其实并没有执行拷贝和复制,只是交换了内部数据结构!(其实就是对地址的变换,个人理解),由于这种原因,迭代器的指向的内存是不会变的,是有效的,但是却变成了不同容器的元素。
                        注意array 的交换却会真正交换他们的元素,所以array的迭代器也会交换,不必担心失效

15:


0 0
原创粉丝点击