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