![](https://img-blog.csdnimg.cn/20201014180756913.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
c++ primer 学习笔记
文章平均质量分 69
黎果666
内容仅作学习记录
展开
-
第九章 顺序容器
第九章 顺序容器 顺序容器概述 string 和 vector 将元素保存在连续的内存空间中,随机访问。 list 、forward_list 是链表,插入删除操作 O(1) ,顺序访问,额外内存开销也很大。 deque 支持快速随机访问,首位删除插入效率高。 array 是固定大小的数组,array不支持添加和删除元素以及改变容器大小的操作。 forward_ list 的设计目标是达到与最好的手写的单向链表数据结构相当的性能。因此,forward_list 没有 size() 操作。 容器库概览原创 2021-09-13 21:34:52 · 90 阅读 · 0 评论 -
第八章 io
第八章 IO io库类型和头文件 IO对象无拷贝或赋值 不能拷贝,因此不能将形参和返回类型设置为流类型。 通常以引用的方式传递和返回流。 读写一个IO对象会改变其状态,所以传递和返回的引用不能是const的。 ofstream out1, out2; out1 = out2; //错误,不能对流对象赋值 ofstream print(out1); //错误,不能初始化ofstream参数 out2 = print(out2); //错误,不能拷贝流对象 条件状态 IO 库定义了原创 2021-09-08 15:20:15 · 119 阅读 · 0 评论 -
c++ primer 学习笔记 第七章 类
第七章 类 定义在类内部的是隐式的inline函数。 成员函数通过一个名为this的隐式参数来访问调用它的那个对象。 //names 类名。total 实例名 name total; total.isTrue(); //等价于 name::isTrue(&toatal); const关键字放在成员函数的参数列表之后,代表this是一个指向常量的指针,所指对象不可被更改。 类作用域与成员函数 首先编译成员声明,再编译成员函数,因此成员函数可以不用在意类内的成员的声明次序。 返回对象的引用。原创 2021-09-03 17:47:26 · 249 阅读 · 0 评论 -
c++ primer 学习笔记 第六章
第六章 函数基础 函数执行的第一步是隐式的定义并初始化他的形参。 如果局部静态变量没有显式的初始值,他将执行值初始化,内置类型的局部静态变量初始化为零。 在头文件中进行函数声明,含有函数声明的头文件应该被包含到定义函数的源文件中。 使用引用避免拷贝,效率高,而且某些类类型不支持拷贝操作。如果函数无需修改引用形参的值,声明为常量引用。 温习----指针引用与const int i = 42; const int *cp = &i; //正确:但是cp不能改变i const int &r原创 2021-08-26 21:19:30 · 79 阅读 · 0 评论 -
c++ primer 学习笔记 第五章
第五章 空语句注意以下情况 while(iter != svec.end()) ; //while循环执行的是空语句 else 总是与最近的 if配套。 switch: 某个case匹配成功,则顺序执行后面的case语句,除非遇到显示中断。 如果在某处一个带有初值的变量位于作用域之外,在另一处改变量位于作用域之内,则从前一处跳转到后一处的行为是非法的。 case true: // 因为程序的执行流程可能绕开下面的初始化语句,所以该switch语句不合法原创 2021-08-25 20:50:36 · 87 阅读 · 0 评论 -
c++ primer 学习笔记 第四章
第四章 左值右值 当对象被用作左值的时候,用的是对象的身份(在内存中的位置);当一个对象被用作右值的时候,用的是对象的值(内容)。 使用关键字decltype时,如果表达式的求值结果是一个左值,decltype作用于该表达式(不是变量)得到一个引用类型。 int i = 4; const int j = 5; int arr[5] = { 0 }; int *ptr = arr; //表达式的结果为左值,推导为类型的引用 decltype((i)) var1 = i; /原创 2021-08-25 20:13:12 · 64 阅读 · 0 评论 -
c++ primer 学习笔记 第三章
c++ primer 学习笔记 第三章 string string::size_type 大致为一个无符号整型数,应避免将string.size()得到的结果与有符号数进行混用。假设n是负值(int),那么s.size() < n 判定结果几乎将会肯定是true, 因为n会被转化为一个很大的无符号整数。 字符串字面值与string对象(这两个类型不同)相加时必须确保每个加法运算符两侧的运算对象至少有一个是string,重载+的时候必须有一个是string对象。 string s2 = s1 + "原创 2021-08-21 21:29:30 · 75 阅读 · 0 评论 -
c++ primer 第二章
第二章 变量定义 初始化与赋值 初始化不是赋值,初始化的含义是创建变量时赋予一个初始值。 赋值的含义是把对象的当前值擦除,以一个新值替代。 声明与定义的区别 声明:规定了变量的类型和名字。 定义:除声明之外,还需要申请存储空间。 如果想声明一个变量,而非定义它,需要使用extern关键词。 extern int i; // 声明i而非定义i int j; // 声明并定义j 变量只能被定义一次,但可以被多次声明。 变量命名规范 用户自定义类名一般以大写字母开头。原创 2021-08-19 21:46:02 · 111 阅读 · 0 评论