Standard library header <numeric>
From cppreference.net
此头文件是 数值计算库 的组成部分。
函数 |
|
|
(C++11)
|
用起始值的连续增量填充范围
(函数模板) |
|
(C++23)
|
用起始值的连续增量填充范围
(算法函数对象) |
|
对范围内的元素求和或折叠
(函数模板) |
|
|
(C++17)
|
类似于
std::accumulate
,但乱序执行
(函数模板) |
|
(C++17)
|
应用可调用对象后乱序规约
(函数模板) |
|
计算两个元素范围的内积
(函数模板) |
|
|
计算范围内相邻元素的差值
(函数模板) |
|
|
计算元素范围的部分和
(函数模板) |
|
|
(C++17)
|
类似于
std::partial_sum
,在第
i
th
个和中包含第
i
th
个输入元素
(函数模板) |
|
(C++17)
|
类似于
std::partial_sum
,在第
i
th
个和中排除第
i
th
个输入元素
(函数模板) |
|
(C++17)
|
应用可调用对象后计算包含性扫描
(函数模板) |
|
(C++17)
|
应用可调用对象后计算排他性扫描
(函数模板) |
|
(C++17)
|
计算两个整数的最大公约数
(函数模板) |
|
(C++17)
|
计算两个整数的最小公倍数
(函数模板) |
|
(C++20)
|
两个数值或指针的中点
(函数模板) |
|
(C++26)
|
两个整数的饱和加法运算
(函数模板) |
|
(C++26)
|
两个整数的饱和减法运算
(函数模板) |
|
(C++26)
|
两个整数的饱和乘法运算
(函数模板) |
|
(C++26)
|
两个整数的饱和除法运算
(函数模板) |
|
(C++
|
|
概要
namespace std { // 累加 template<class InputIt, class T> constexpr T accumulate(InputIt first, InputIt last, T init); template<class InputIt, class T, class BinaryOperation> constexpr T accumulate(InputIt first, InputIt last, T init, BinaryOperation binary_op); // 归约 template<class InputIt> constexpr typename iterator_traits<InputIt>::value_type reduce(InputIt first, InputIt last); template<class InputIt, class T> constexpr T reduce(InputIt first, InputIt last, T init); template<class InputIt, class T, class BinaryOperation> constexpr T reduce(InputIt first, InputIt last, T init, BinaryOperation binary_op); template<class ExecutionPolicy, class ForwardIt> typename iterator_traits<ForwardIt>::value_type reduce(ExecutionPolicy&& exec, ForwardIt first, ForwardIt last); template<class ExecutionPolicy, class ForwardIt, class T> T reduce(ExecutionPolicy&& exec, ForwardIt first, ForwardIt last, T init); template<class ExecutionPolicy, class ForwardIt, class T, class BinaryOperation> T reduce(ExecutionPolicy&& exec, ForwardIt first, ForwardIt last, T init, BinaryOperation binary_op); // 内积 template<class InputIt1, class InputIt2, class T> constexpr T inner_product(InputIt1 first1, InputIt1 last1, InputIt2 first2, T init); template<class InputIt1, class InputIt2, class T, class BinaryOperation1, class BinaryOperation2> constexpr T inner_product(InputIt1 first1, InputIt1 last1, InputIt2 first2, T init, BinaryOperation1 binary_op1, BinaryOperation2 binary_op2); // 变换归约 template<class InputIt1, class InputIt2, class T> constexpr T transform_reduce(InputIt1 first1, InputIt1 last1, InputIt2 first2, T init); template<class InputIt1, class InputIt2, class T, class BinaryOperation1, class BinaryOperation2> constexpr T transform_reduce(InputIt1 first1, InputIt1 last1, InputIt2 first2, T init, BinaryOperation1 binary_op1, BinaryOperation2 binary_op2); template<class InputIt, class T, class BinaryOperation, class UnaryOperation> constexpr T transform_reduce(InputIt first, InputIt last, T init, BinaryOperation binary_op, UnaryOperation unary_op); template<class ExecutionPolicy, class ForwardIt1, class ForwardIt2, class T> T transform_reduce(ExecutionPolicy&& exec, ForwardIt1 first1, ForwardIt1 last1, ForwardIt2 first2, T init); template<class ExecutionPolicy, class ForwardIt1, class ForwardIt2, class T, class BinaryOperation1, class BinaryOperation2> T transform_reduce(ExecutionPolicy&& exec, ForwardIt1 first1, ForwardIt1 last1, ForwardIt2 first2, T init, BinaryOperation1 binary_op1, BinaryOperation2 binary_op2); template<class ExecutionPolicy, class ForwardIt, class T, class BinaryOperation, class UnaryOperation> T transform_reduce(ExecutionPolicy&& exec, ForwardIt first, ForwardIt last, T init, BinaryOperation binary_op, UnaryOperation unary_op); // 部分和 template<class InputIt, class OutputIt> constexpr OutputIt partial_sum(InputIt first, InputIt last, OutputIt result); template<class InputIt, class OutputIt, class BinaryOperation> constexpr OutputIt partial_sum(InputIt first, InputIt last, OutputIt result, BinaryOperation binary_op); // 排除扫描 template<class InputIt, class OutputIt, class T> constexpr OutputIt exclusive_scan(InputIt first, InputIt last, OutputIt result, T init); template<class InputIt, class OutputIt, class T, class BinaryOperation> constexpr OutputIt exclusive_scan(InputIt first, InputIt last, OutputIt result, T init, BinaryOperation binary_op); template<class ExecutionPolicy, class ForwardIt1, class ForwardIt2, class T> ForwardIt2 exclusive_scan(ExecutionPolicy&& exec, ForwardIt1 first, ForwardIt1 last, ForwardIt2 result, T init); template<class ExecutionPolicy, class ForwardIt1, class ForwardIt2, class T, class BinaryOperation> ForwardIt2 exclusive_scan(ExecutionPolicy&& exec, ForwardIt1 first, ForwardIt1 last, ForwardIt2 result, T init, BinaryOperation binary_op); // 包含扫描 template<class InputIt, class OutputIt> constexpr OutputIt inclusive_scan(InputIt first, InputIt last, OutputIt result); template<class InputIt, class OutputIt, class BinaryOperation> constexpr OutputIt inclusive_scan(InputIt first, InputIt last, OutputIt result, BinaryOperation binary_op); template<class InputIt, class OutputIt, class BinaryOperation, class T> constexpr OutputIt inclusive_scan(InputIt first, InputIt last, OutputIt result, BinaryOperation binary_op, T init); template<class ExecutionPolicy, class ForwardIt1, class ForwardIt2> ForwardIt2 inclusive_scan(ExecutionPolicy&& exec, ForwardIt1 first, ForwardIt1 last, ForwardIt2 result); template<class ExecutionPolicy, class ForwardIt1, class ForwardIt2, class BinaryOperation></