<!--markdown-->## 1. #include < algorithm>
1. sort(begin, end)
对[begin,end)区间升序排序;可传自定义比较函数。注意左闭右开。
2. unique(begin, end)
去重,只移除相邻重复元素!必须先排序。返回去重之后的尾迭代器,不真正删除容器元素,只是覆盖。
3. reverse(begin, end)
翻转数组区间内元素(转成倒序)。
4. max(a,b) / min(a,b)
取两个数最大、最小。注意:只支持两个参数。
5. lower_bound(begin,end,x)
有序序列,找第一个大于等于x的位置,二分。找不到返回end。
6. upper_bound(begin,end,x)
有序序列,找第一个大于x的位置,二分。找不到返回end。
2. #include < cmath>
1. sqrt(x):开平方,返回double。整数要注意强制类型转换。
2. pow(a,b):求a的b次方,返回double,。
3. abs(x):int整数的绝对值
4. fabs(x):double/float浮点数绝对值。坑点:abs不能直接给浮点数。
5. ceil(x):向上取整
6. floor(x):向下取整
7. round(x):四舍五入
3. #include < cctype> 字符处理
1. isdigit(ch):判断是不是数字'0'~'9',返回非0代表真,不是返回0。参数必须是unsigned char,char负数会出错,初赛会挖坑
2. isalpha(ch) 判断是否大小写字母
3. islower(ch) 判断小写字母
4. isupper(ch) 判断大写字母
5. tolower(ch) 转小写
6. toupper(ch) 转大写
4. #include < string> string类函数
1. s.size() / s.length():获取字符串长度,两者等价,返回size_t无符号整数(大坑:无符号数做减法会溢出,初赛阅读题常考)
2. s.substr(pos, len):从pos下标开始,截取len个字符;len省略直接截取到末尾。下标从0开始。
3. s.find(t):在s里面找子串t,找到返回起始下标;找不到返回s.npos。
4. s.erase(pos,len) 删除字符串部分内容
5. s.append(str) 字符串拼接,等价 s += str
6. s.empty() 判断字符串是否为空,返回bool
5. cstdio / 其它常见
1. memset(a,val,sizeof(a)) <cstring>,按字节赋值,只适合置0、置‑1。不能直接用来赋大数。初赛完善程序高频。
2. strlen(char *s) <cstring>,C风格char[]字符串长度,不包含'\0'。注意和string的size区分。
3. strcmp(s1,s2) 比较char*字符串;0代表相等,小于0 s1小,大于0 s1大。
4. sprintf、sscanf C风格字符串格式化,偶尔出现阅读程序。
6. #include < vector> vector容器
1. v.size():元素个数,返回无符号size_t
2. v.empty() 判断是否为空
3. v.push_back(x) 尾部插入元素
4. v.pop_back() 删除尾部元素
5. v.begin() 返回首元素迭代器
6. v.end() 返回末尾后一位迭代器(左闭右开,不指向有效元素)
7. v.clear() 清空全部元素
7. #include < map> < set>
1. m.count(key) map/set,判断key是否存在,存在返回1,不存在返回0
2. m.find(key) 找到返回迭代器,找不到返回m.end()
3. m.erase(key) 删除key
4. s.insert(x) set插入元素,自动去重、内部有序>