这次是一些标准库的使用

IO库

  1. 不能拷贝或对IO类赋值
  2. 可以是用endl来刷新缓冲区
  3. 使用unitbuf来设置接下来的每一次输出都刷新缓冲区,使用nounitbuf恢复到正常状态
  4. 程序崩溃,输出缓冲区不会被刷新
  5. 当一个输入流被关联到一个输出流时,任何试图从输入流读取数据的操作都会先刷新关联的输出流
  6. 创建文件流对象时,如果提供了文件名,则open会自动被调用,当一个fstream对象被销毁时,close会自动被调用
  7. 文件模式
    1. in 只读方式打开
    2. out 只写方式打开
    3. app 每次写操作前均定位到文件末尾
    4. ate 打开文件后立即定位到未见末尾
    5. trunc 截断文件
    6. binary 已二进制方式进行IO

顺序容器

  1. 顺序容器类型

    1. vector 可变大小数组。支持快速随机访问。在尾部之外的位置插入或删除元素可能很慢
    2. deque 双端队列。支持快速随机访问。在头尾位置插入/删除速度很快
    3. list 双向链表。只支持双向顺序访问。在list中任何位置插入/删除速度都很快
    4. forward_list 单向链表。只支持单向顺序访问。在链表任何进行插入、删除等操作速度都很快
    5. array 固定大小数组。支持快速随机访问。不能添加或删除元素
    6. string 与vector相似的容器,但专门用于保存字符。随机访问快。在尾部插入、删除速度快
  2. forward_list不支持递减运算符

  3. 向一个vector,string或deque插入元素会使所有指向容器的迭代器、引用和指针失效。
  4. 将一个元素放进一个容器,事实上是放入他的拷贝进去

泛型算法

  1. 算法不依赖于容器,但是依赖于容器内的类型
  2. 除了少数算法外,标准库算法都对一个范围内的元素进行操作
  3. 那些只接受一个单一迭代器来表示第二个序列的算法,都假定第二个序列至少与第一个序列一样长
  4. lambda类似于闭包,不过只能使用捕获列表里的lambda所在函数里面的变量和函数外部的名字
  5. 当以引用捕获一个变量时,必须保证在lambda执行时变量是存在的。

部分文字来自《C++ Primer》