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

标签: none

评论已关闭