- IO 库重载了移位运算符
- C++并没有函数输出,而是奇怪的运算符scanf() printf()
- 实际上cin他们是一个类的对象
干脆禁止拷贝,因为要管理缓冲区,防止冲突
- <<移位有左结合性,所以具体应该是(cout<<a)<<b 前面应该返回一个cout
- 细度
第一个参数是ostream 对象,因为禁止拷贝赋值,所以应该用它的引用;右侧是一个point对象,因为我们不会改变它所以合情合理的我们应该加上const,使用它的引用。
- 显示的向布尔转化,并不需要特殊的说明
-
输入流可能有一个发生错误的地方,读入数据的格式不正确。但是它不报错,此时可以直接在重载里处理
-
必须用引用,否则就和你创建的对象没啥关系了
-
因为函数多次用到,比较小,可以用内联
- string库重载了+和【】
- 提供了两个string或者一个C风格双引号内,一个string单引号相合并
- getline
想读一行,将这一行内容存在一个字符串里。遇到换行符就终止,加入进来舍去 。典型错误:读了一个数字,有一个换行符,在用getline直接读了个空,解决措施getline。ignore或者用两次getline
-
对象infile可以直接用字符串调用,也可以用open方法
- 其实和cin对象一模一样的
- 读取文件操作
- 文件模式 打开一个文件不是覆盖掉它,如果没有新建一个
文件模式可以组合使用,||或就可以
- 字符串流stringstream
- 相当于给输入又做了一层缓冲
- 字符串的构造
- 字符串操作
一言以蔽之,运算符的左结合性
- 总是考虑复合运算符
效率有显著差别,一个类似push_back追加上去容器,一个需要两次拷贝
- 容器大小
所有容器除了forwardlist都有size,只有string有length
- for语句
用s字符串从0开始一个一个初始化C,所以必须加&
- vector
- vector原来是模板类!vector《int》原来才是真正的类型
- 构造
其他构造方式
败笔混淆
- vector和string类似
因为你不知道是连接还是对应值相加
下标越界!不会检查但还是有at
- 基于范围的for语句
- C++也有自己的迭代器了!
- it和其他语言类似Kolin
- it是迭代器里的值引用,重载了*运算符以便于修改
迭代器的尾是最后一个元素的下一个,构成了一个左闭右开区间,这样写有许多好处 :比如end-begin就是迭代的长度,end永远小于begin,如果相等那么就是空的
- 尾后迭代器不能戒应用,因为它不指向是实际的元素,他只是指向最后一个元素的下一个位置
-
操作
- 基于范围的for语句实现借助于迭代器
- 什么东西可以放在后面,有begin和and,支持++。可以解引用
- 为什么用前置加++,因为后置加会赋值一次,我不用加之前的值就不需要后置浪费时间,所以迭代器都是前置加加
- 你可以为auto加const 复合使用
- auto是一种自信
底层const类型的迭代器 用cbegin就可以
-
为甚用!=而不是<,因为不是所有容器所有迭代器都提供<但是一定都有!=