提取自洛谷日报 从 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
系列