Standard library header <numeric>
From cppreference.net
이 헤더는 numeric 라이브러리의 일부입니다.
함수 |
|
|
(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
번째
입력 요소를
i
번째
합계에서 제외합니다
(함수 템플릿) |
|
(C++17)
|
호출 가능 객체를 적용한 후 inclusive scan을 계산합니다
(함수 템플릿) |
|
(C++17)
|
호출 가능 객체를 적용한 후, 배타적 스캔을 계산합니다
(함수 템플릿) |
|
(C++17)
|
두 정수의 최대공약수를 계산합니다
(function template) |
|
(C++17)
|
두 정수의 최소공배수를 계산합니다
(함수 템플릿) |
|
(C++20)
|
두 숫자 또는 포인터 간의 중간점
(함수 템플릿) |
|
(C++26)
|
두 정수에 대한 포화 덧셈 연산
(함수 템플릿) |
|
(C++26)
|
두 정수에 대한 포화 뺄셈 연산
(함수 템플릿) |
|
(C++26)
|
두 정수에 대한 포화 곱셈 연산
(함수 템플릿) |
|
(C++26)
|
두 정수에 대한 포화 나눗셈 연산
(함수 템플릿) |
|
(C++26)
|
다른 정수 타입의 범위로 제한된 정수 값을 반환합니다
(함수 템플릿) |
시놉시스
namespace std { // accumulate 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); // reduce 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); // transform reduce 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); // exclusive scan 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); // inclusive scan 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); // transform inclusive scan 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); // adjacent difference 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); // iota template<class ForwardIt, class T> constexpr void 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); // midpoint template<class T> constexpr T midpoint(T a, T b) noexcept; template<class T> constexpr T* midpoint(T* a, T* b); // saturation arithmetic template<class T> constexpr T add_sat(T x, T y) noexcept; // freestanding template<class T> constexpr T sub_sat(T x, T y) noexcept; // 독립 실행 환경 template<class T> constexpr T mul_sat(T x, T y) noexcept; // freestanding template<class T> constexpr T div_sat(T x, T y) noexcept; // 독립 실행 환경 template<class T, class U> constexpr T saturate_cast(U x) noexcept; // 독립 실행 환경 }