这次是一些标准库的使用
IO库
- 不能拷贝或对IO类赋值
- 可以是用
endl
来刷新缓冲区 - 使用
unitbuf
来设置接下来的每一次输出都刷新缓冲区,使用nounitbuf
恢复到正常状态 - 程序崩溃,输出缓冲区不会被刷新
- 当一个输入流被关联到一个输出流时,任何试图从输入流读取数据的操作都会先刷新关联的输出流
- 创建文件流对象时,如果提供了文件名,则open会自动被调用,当一个fstream对象被销毁时,close会自动被调用
- 文件模式
- in 只读方式打开
- out 只写方式打开
- app 每次写操作前均定位到文件末尾
- ate 打开文件后立即定位到未见末尾
- trunc 截断文件
- binary 已二进制方式进行IO
顺序容器
-
顺序容器类型
- vector 可变大小数组。支持快速随机访问。在尾部之外的位置插入或删除元素可能很慢
- deque 双端队列。支持快速随机访问。在头尾位置插入/删除速度很快
- list 双向链表。只支持双向顺序访问。在list中任何位置插入/删除速度都很快
- forward_list 单向链表。只支持单向顺序访问。在链表任何进行插入、删除等操作速度都很快
- array 固定大小数组。支持快速随机访问。不能添加或删除元素
- string 与vector相似的容器,但专门用于保存字符。随机访问快。在尾部插入、删除速度快
-
forward_list不支持递减运算符
-
向一个vector,string或deque插入元素会使所有指向容器的迭代器、引用和指针失效。
-
将一个元素放进一个容器,事实上是放入他的拷贝进去
泛型算法
- 算法不依赖于容器,但是依赖于容器内的类型
- 除了少数算法外,标准库算法都对一个范围内的元素进行操作
- 那些只接受一个单一迭代器来表示第二个序列的算法,都假定第二个序列至少与第一个序列一样长
-
lambda
类似于闭包,不过只能使用捕获列表里的lambda
所在函数里面的变量和函数外部的名字 - 当以引用捕获一个变量时,必须保证在lambda执行时变量是存在的。
部分文字来自《C++ Primer》
写于2015-01-12
网友评论