一些可能不知道或不熟悉的有用但冷门的库函数

提取自洛谷日报 从 C++98 到 C++20,寻觅甜甜的语法糖们 中 C++98 到 C++14 的部分。

这是菜鸡作者写给自己看的,你认为有缺失可以在评论区说,但是不一定会添加。

函数所位于的库就不写了,反正都 #include<bits/stdc++.h> 了。

  • __lg(x) :GNU 私货。返回 \(\lfloor\log_2x\rfloor\)__builtin 套皮实现,时间复杂度 \(O(1)\),常数很小。
  • partial_sum(bg1, ed1, bg2)\([bg_1,ed_1)\) 的前缀和,并存入以 \(bg_2\) 为起始的地址。可以传入第四个参数作为加法。可以原地求前缀和。
  • adjacent_difference(bg1, ed1, bg2)\([bg_1,ed_1)\) 的差分,并存入以 \(bg_2\) 为起始的地址。可以传入第四个参数作为减法。可以原地求差分。
  • minmax(a, b) :返回一个 pair<>,其 first\(\min(a,b)\)second\(\max(a,b)\)
  • max(l)/min(l)\(l\) 是一个初始化列表,返回 \(l\) 中最大 / 最小的元素。可以把恶心的 max(max(a, b), max(c, d)) 换成 max({a, b, c, d}) 辣!
  • minmax(l)\(l\) 是一个初始化列表,作用类比 minmax(a, b)
  • max/min/minmax_element(bg, ed) :作用看名字。可以用来求某些 DP 题的最终解。
  • iota(bg, ed, val) :将 \([bg,ed)\) 中的元素依次赋值为 \(val,val+1,val+2,\cdots\) 可用于给并查集初始化。是 iota,不是 itoa,不要写混。
  • hypot(x, y)返回 \(\sqrt{x^2+y^2}\)
  • accumulate(bg, ed) 求和,可以多传一个参作为加法。
  • __builtin 系列
posted @ 2023-04-24 20:44  untitled0  阅读(63)  评论(1)    收藏  举报