C++ 中 <iterator> <functional> <numeric> 库好用的函数
C++ 中 <iterator> <functional> <numeric> 库好用的函数
泰裤辣!
<iterator>
简述:迭代器省代码用的。
std::advance
记忆方法:advance-前进。
形如:advance(it, step)
,表示 it
迭代器自增 step
步。
实现类似于:
function advance(&it, n): while n > 0: --n ++it while n < 0: ++n --it
或
function advance(&it, n): it += n
std::next & std::prev
记忆方法:自己问英语老师。
形如 next(it, n)
及 prev(it, n)
,默认 n = 1
,表示迭代器前移、后移 n
位。
为 std::advance
的变体,区别在于返回了迭代器而传入迭代器不改变。
实现类似于:
function next(it, n = 1): -> iterator std::advance(it, n) return it function prev(it, n = 1): -> iterator std::advance(it, -n) return it
std::distance
记忆方法:distance-距离。
形如:distance(st, ed)
,表示迭代器 st
和 ed
之间的距离(从 st
跳到 ed
的距离)。
实现类似于:
function distance(first, last): result := 0 while first <> last: ++first ++result return result
或
function distance(first, last): return last - first
<functional>
简述:不用自己写 lambda 了。
函数 | 表示 |
---|---|
2.3 算术运算 | |
plus |
实现 x + y 的函数对象 (类模板) |
minus |
实现 x - y 的函数对象 (类模板) |
multiplies |
实现 x * y 的函数对象 (类模板) |
divides |
实现 x / y 的函数对象 (类模板) |
modulus |
实现 x % y 的函数对象 (类模板) |
negate |
实现 -x 的函数对象 (类模板) |
2.4 比较 | |
equal_to |
实现 x == y 的函数对象 (类模板) |
not_equal_to |
实现 x != y 的函数对象 (类模板) |
greater |
实现 x > y 的函数对象 (类模板) |
less |
实现 x < y 的函数对象 (类模板) |
greater_equal |
实现 x >= y 的函数对象 (类模板) |
less_equal |
实现 x <= y 的函数对象 (类模板) |
2.6 逻辑运算 | |
logical_and |
实现 x && y 的函数对象 (类模板) |
logical_or |
实现 x || y 的函数对象 (类模板) |
logical_not |
实现 !x 的函数对象 (类模板) |
2.7 逐位运算 | |
bit_and |
实现 x & y 的函数对象 (类模板) |
bit_or |
实现 x | y 的函数对象 (类模板) |
bit_xor |
实现 x ^ y 的函数对象 (类模板) |
bit_not |
实现 ~x 的函数对象 (类模板) |
<numeric>
简述:奇奇怪怪的简化程序写法的库。
std::iota
记忆方法:increase-(output)->ta
。
形如 iota(begin, end, value)
,表示 [begin, end)
从 value
开始,递增填充。
实现类似于:
function iota(first, last, value): while first <> last: [first] := value ++first ++value
std::accumulate
记忆方法:accumulate-积累。
形如 accumulate(begin, end, value)
,表示 [begin, end)
从 value
开始,求和。
实现类似于:
function accumulate(first, last, init): -> type while first <> last: init := init + [first] ++first return init
形如 accumulate(begin, end, value, fun)
,表示 [begin, end)
从 value
开始,对 fun
函数执行。
实现类似于:
function accumulate(first, last, init, op): -> type while first <> last: init := op(init, [first]) ++first return init
std::partial_sum
记忆方法:前缀那一部分求和
形如:partial_sum(begin, end, dist)
,表示 [begin, end)
的前缀和放在 dist
开始的位置,返回终止迭代器。
实现类似于:
function partial_sum(first, last, d_first): -> iterator if first == last: return d_first [d_first] := [first] sum := [first] while ++first <> last: sum := sum + [first] [++d_first] := sum return ++d_first
形如:partial_sum(begin, end, dist)
,表示求 [begin, end)
的 fun
函数前缀,放在 dist
开始的位置,返回终止迭代器。
实现类似于:
function partial_sum(first, last, d_first, op): -> iterator if first == last: return d_first sum := [first] [d_first] := sum while ++first <> last: sum := op(sum, [first]) [++d_first] := sum return ++d_first
std::adjacent_difference
记忆方法:adjacent-相邻的,difference-差值。
形如:adjacent_difference(begin, end, dist)
,表示 [begin, end)
对相邻两项的差值,放在 dist + 1
开始的位置,返回终止迭代器。
实现类似于:
function adjacent_difference(first, last, d_first): -> iterator if first == last: return d_first acc := [first] [d_first] := acc while ++first <> last: val := [first] [++d_first] := val - acc acc := val return ++d_first
形如:adjacent_difference(begin, end, dist, op)
,表示 [begin, end)
对相邻两项的 op
函数值,放在 dist + 1
开始的位置,返回终止迭代器。
实现类似于:
function adjacent_difference(first, last, d_first): -> iterator if first == last: return d_first acc := [first] [d_first] := acc while ++first <> last: val := [first] [++d_first] := op(val, acc) acc := val return ++d_first
本文来自博客园,作者:RainPPR,转载请注明原文链接:https://www.cnblogs.com/RainPPR/p/iterator-functional-numeric.html
如有侵权请联系我(或 2125773894@qq.com)删除。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】凌霞软件回馈社区,携手博客园推出1Panel与Halo联合会员
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步