C++基础
- 输入输出流
scanf 和 printf 格式化输入格式化输出:需要对应格式,用指针操作,没有类型安全机制,数据量大时效率高
cin 和 cout 流输入流输出:读取是数据流,而不是具体的数据,自动判断变量类型,不需要指定。需要先存入缓冲区再输入,一般情况下等到缓冲区满时再自动刷新,效率较低但很安全。对于单个字符输入 cin的输入忽略空格和换行符。流插入运算符 << 在一个语句中可多次使用,endl 用于在行末添加一个换行符
- 常用头文件
#include <bits/stdc++.h> 万能头文件
#include <iomanip> 流操作符头文件
#include <cstdio> 函数定义在名称空间std内,要调用函数须加std::或者声明using namespace std;
#include <iostream> cin和cout等函数所属的头文件
#include <cstdlib> 动态内存分配所需函数,rand随机数函数所属头文件
#include <cstring> 字符串函数头文件
#include <climits> 定义各种数据类型最值
#include <cmath> 数学头文件,包含幂函数、指数函数、平方根及三角函数等函数
#include <bitset> 可以访问指定下标的bit位,还可以把它们作为一个整数统计
**************************************STL库**************************************
容器部分
序列式容器
#include<vector> 连续存储的元素
#include<list> 列表,由节点组成的双向链表,每个结点包含着一个元素
#include<deque> 双端队列 连续存储的指向不同元素的指针所组成的数组
适配器容器
#include<stack> 栈,后进先出
#include<queue> 队列,先进先出;优先队列(priority_queue)元素次序由作用于所存储的值对上的某种谓词决定的的一种队列
关联式容器
#include<set> 集合,由节点组成的红黑树,每个节点都包含着一个元素,节点之间以某种作用于元素队的谓词排列,没有两个不同的元素能够拥有相同的次序;多重集合(multiset) 允许存在两个次序相等的元素的集合
#include<map>映射,由{键,值}对组成的集合,以某种作用于键对上的谓词排列;多重映射(multimap) 允许键对有相等的次序的映射
迭代器部分
#include <utility> 模板的声明,如pair结构,通过first,second访问成员,有operator= 和 swap方法
#include <iterator> 迭代器使用的方法
#include <memory> 分配存储空间,向临时对象提供机制
算法部分
#include <algorithm> max和min等函数所属的头文件,还包含交换、查找、遍历、排序、修改等等操作
#include <functional> 定义了一些模板类,用以声明函数对象
#include <numeric> 在序列上面进行简单数学运算的模板函数