<!--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插入元素,自动去重、内部有序>