C++ Primer笔记
文章平均质量分 52
runrunrun1987
这个作者很懒,什么都没留下…
展开
-
9.2 容器库概览
9.2.4 容器定义和初始化 将一个容器创建为另一个容器的拷贝的两种方法 将一个容器创建为另一个容器的拷贝有两种方法: (1)直接拷贝整个容器,要求两个容器的类型及其元素类型必须完全相同,array还要求大小一样,因为array的大小是其数据类型的一部分。 (2)拷贝由一个迭代器对指定的元素范围,容器类型和元素类型都可以不同,只要能将要拷贝原创 2018-01-10 17:00:49 · 153 阅读 · 0 评论 -
7.5 构造函数再探
7.5.1 构造函数初始值列表 对于定义一个类的对象来说,随着构造函数体一开始执行,该对象的数据成员的初始化就完成了。初始化的过程为:先用构造函数的初始值列表中的值显式地初始化成员;构造函数初始值列表中没有的,用类内初始值初始化;也没有类内初始值的,执行默认初始化。 构造函数的初始值有时必不可少 对于一个类来说,某些类型的数据成员(如内置类型)可以不用构造函数原创 2017-12-17 21:23:49 · 341 阅读 · 0 评论 -
9.4 vector对象是如何增长的
vector中元素是连续存储的,因此原则上每添加一个元素,都要重新开辟一段存储空间,并将原来存储空间的值拷贝过来,末尾再加上新添加的元素,这样效率是非常低的。因此,为了提高效率只能牺牲内存了:每次开辟存储空间时,开辟的空间能容纳的元素个数大于等于实际已有的元素的个数,这样只要添加元素后元素的总个数没有超过此前开辟的存储空间能容纳的元素个数,就不用重新开辟新内存啦! 为了让用户更好原创 2018-01-23 17:20:10 · 208 阅读 · 0 评论 -
9.3 顺序容器操作
9.3.2 访问元素顺序容器提供了4种访问元素的方式:c.front()、c.back()、c[n]、c.at(n)。对于存储空间连续的容器(vector、string、deque和array)来说,这4中方式都可以用,可以通过front和back获得首、尾元素,也可以通过下标运算符和at成员函数访问任意位置的元素。而存储空间不连续的list只能用begin和end成员函数获得首、尾元素的引用,只原创 2018-01-18 22:32:38 · 157 阅读 · 0 评论 -
12.1 动态内存与智能指针
12.1.3 shared_ptr和new结合使用 shared_ptr和内置指针可以相互转化! shared_ptr有一个接受一个内置指针参数的构造函数,因此能用一个内置指针来初始化shared_ptr;又由于该构造函数是explicit的,所以不支持隐式地用内置指针构造shared_ptr(即不支持内置指针到shared_ptr的隐式类型转换)。造成的结果是原创 2018-01-26 14:46:44 · 182 阅读 · 0 评论