标准库标头 <numeric>

来自cppreference.com
< cpp‎ | header


 
 
标准库头
 

此头文件是数值库的一部分。

函数

(C++11)
从初始值开始连续递增填充范围
(函数模板)[编辑]
从初始值开始连续递增填充范围
(算法函数对象)[编辑]
求和或折叠范围中元素
(函数模板)[编辑]
(C++17)
类似 std::accumulate,但不依序执行
(函数模板)[编辑]
应用可调用对象,然后乱序规约
(函数模板)[编辑]
计算两个范围中元素的内积
(函数模板)[编辑]
计算范围中相邻元素的差
(函数模板)[编辑]
计算范围中元素的部分和
(函数模板)[编辑]
类似 std::partial_sum,第 i 个和中包含第 i 个输入
(函数模板)[编辑]
类似 std::partial_sum,第 i 个和中排除第 i 个输入
(函数模板)[编辑]
应用可调用对象,然后计算包含扫描
(函数模板)[编辑]
应用可调用对象,然后计算排除扫描
(函数模板)[编辑]
(C++17)
计算两个整数的最大公约数
(函数模板)[编辑]
(C++17)
计算两个整数的最小公倍数
(函数模板)[编辑]
(C++20)
两个数值或指针间的中点
(函数模板)[编辑]
(C++26)
两个整数的饱和加法运算
(函数模板)[编辑]
(C++26)
两个整数的饱和减法运算
(函数模板)[编辑]
(C++26)
两个整数的饱和乘法运算
(函数模板)[编辑]
(C++26)
两个整数的饱和除法运算
(函数模板)[编辑]
返回在另一整数类型范围内的整数
(函数模板)[编辑]

[编辑]概要

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>constexprtypename 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> ForwardIt2 inclusive_scan(ExecutionPolicy&& exec, ForwardIt1 first, ForwardIt1 last, ForwardIt2 result, BinaryOperation binary_op);template<class ExecutionPolicy, class ForwardIt1, class ForwardIt2, class BinaryOperation, class T> ForwardIt2 inclusive_scan(ExecutionPolicy&& exec, ForwardIt1 first, ForwardIt1 last, ForwardIt2 result, BinaryOperation binary_op, T init);   // 变换排除扫描template<class InputIt, class OutputIt, class T, class BinaryOperation, class UnaryOperation>constexpr OutputIt transform_exclusive_scan(InputIt first, InputIt last, OutputIt result, T init, BinaryOperation binary_op, UnaryOperation unary_op);template<class ExecutionPolicy, class ForwardIt1, class ForwardIt2, class T, class BinaryOperation, class UnaryOperation> ForwardIt2 transform_exclusive_scan(ExecutionPolicy&& exec, ForwardIt1 first, ForwardIt1 last, ForwardIt2 result, T init, BinaryOperation binary_op, UnaryOperation unary_op);   // 变换包含扫描template<class InputIt, class OutputIt, class BinaryOperation, class UnaryOperation>constexpr OutputIt transform_inclusive_scan(InputIt first, InputIt last, OutputIt result, BinaryOperation binary_op, UnaryOperation unary_op);template<class InputIt, class OutputIt, class BinaryOperation, class UnaryOperation, class T>constexpr OutputIt transform_inclusive_scan(InputIt first, InputIt last, OutputIt result, BinaryOperation binary_op, UnaryOperation unary_op, T init);template<class ExecutionPolicy, class ForwardIt1, class ForwardIt2, class BinaryOperation, class UnaryOperation> ForwardIt2 transform_inclusive_scan(ExecutionPolicy&& exec, ForwardIt1 first, ForwardIt1 last, ForwardIt2 result, BinaryOperation binary_op, UnaryOperation unary_op);template<class ExecutionPolicy, class ForwardIt1, class ForwardIt2, class BinaryOperation, class UnaryOperation, class T> ForwardIt2 transform_inclusive_scan(ExecutionPolicy&& exec, ForwardIt1 first, ForwardIt1 last, ForwardIt2 result, BinaryOperation binary_op, UnaryOperation unary_op, T init);   // 相邻差template<class InputIt, class OutputIt>constexpr OutputIt adjacent_difference(InputIt first, InputIt last, OutputIt result);template<class InputIt, class OutputIt, class BinaryOperation>constexpr OutputIt adjacent_difference(InputIt first, InputIt last, OutputIt result, BinaryOperation binary_op);template<class ExecutionPolicy, class ForwardIt1, class ForwardIt2> ForwardIt2 adjacent_difference(ExecutionPolicy&& exec, ForwardIt1 first, ForwardIt1 last, ForwardIt2 result);template<class ExecutionPolicy, class ForwardIt1, class ForwardIt2, class BinaryOperation> ForwardIt2 adjacent_difference(ExecutionPolicy&& exec, ForwardIt1 first, ForwardIt1 last, ForwardIt2 result, BinaryOperation binary_op);   // iotatemplate<class ForwardIt, class T>constexprvoid iota(ForwardIt first, ForwardIt last, T value);   namespace ranges {template<class O, class T>using iota_result = out_value_result<O, T>;   template<input_or_output_iterator O, sentinel_for<O> S, weakly_incrementable T> requires indirectly_writable<O, const T&>constexpr iota_result<O, T> iota(O first, S last, T value);   template<weakly_incrementable T, output_range<const T&> R>constexpr iota_result<borrowed_iterator_t<R>, T> iota(R&& r, T value);}   // 最大公约数template<class M, class N>constexpr common_type_t<M, N> gcd(M m, N n);   // 最小公倍数template<class M, class N>constexpr common_type_t<M, N> lcm(M m, N n);   // 中点template<class T>constexpr T midpoint(T a, T b)noexcept;template<class T>constexpr T* midpoint(T* a, T* b);   // 饱和算术template<class T>constexpr T add_sat(T x, T y)noexcept;// 独立template<class T>constexpr T sub_sat(T x, T y)noexcept;// 独立template<class T>constexpr T mul_sat(T x, T y)noexcept;// 独立template<class T>constexpr T div_sat(T x, T y)noexcept;// 独立template<class T, class U>constexpr T saturate_cast(U x)noexcept;// 独立}
close