395 lines
32 KiB
HTML
395 lines
32 KiB
HTML
<!DOCTYPE html>
|
|
<html lang="zh" dir="ltr" class="client-nojs" xmlns="http://www.w3.org/1999/xhtml" xml:lang="zh">
|
|
<head><meta http-equiv="x-ua-compatible" content="ie=edge">
|
|
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
|
|
<title>标准库头文件 <numeric></title>
|
|
<link rel="stylesheet" href="ext.css" />
|
|
<link rel="stylesheet" href="site_modules.css" />
|
|
</head>
|
|
<body class="mediawiki ltr sitedir-ltr ns-0 ns-subject page-cpp_header_numeric skin-cppreference2 action-view cpp-navbar">
|
|
<div id="cpp-content-base">
|
|
<div id="content"><a id="top"></a>
|
|
<h1 id="firstHeading" class="firstHeading"><span style="font-size:0.7em; line-height:130%">标准库头文件</span> <numeric></h1>
|
|
<div id="bodyContent">
|
|
<div id="contentSub"><span class="subpages">< <a href="cpp.html">cpp</a>‎ | <a href="cpp-header.html">header</a></span></div>
|
|
<div id="mw-content-text" lang="zh" dir="ltr" class="mw-content-ltr" xml:lang="zh">
|
|
<p>此头文件是<a href="cpp-numeric.html">数值</a>库的一部分。</p>
|
|
<table class="t-dsc-begin">
|
|
<tr>
|
|
<td colspan="2">
|
|
<h3><span class="mw-headline" id=".E5.87.BD.E6.95.B0">函数</span></h3>
|
|
</td>
|
|
</tr>
|
|
<tr class="t-dsc">
|
|
<td>
|
|
<div class="t-dsc-member-div">
|
|
<div><a href="cpp-algorithm-iota.html"><span class="t-lines"><span>iota</span></span></a></div>
|
|
<div><span class="t-lines"><span><span class="t-mark-rev t-since-cxx11">(C++11)</span></span></span></div>
|
|
</div>
|
|
</td>
|
|
<td>用从起始值开始连续递增的值填充一个范围<br />
|
|
<span class="t-mark">(函数模板)</span></td>
|
|
</tr>
|
|
<tr class="t-dsc">
|
|
<td>
|
|
<div class="t-dsc-member-div">
|
|
<div><a href="cpp-algorithm-accumulate.html"><span class="t-lines"><span>accumulate</span></span></a></div>
|
|
</div>
|
|
</td>
|
|
<td>对一个范围内的元素求和<br />
|
|
<span class="t-mark">(函数模板)</span></td>
|
|
</tr>
|
|
<tr class="t-dsc">
|
|
<td>
|
|
<div class="t-dsc-member-div">
|
|
<div><a href="cpp-algorithm-reduce.html"><span class="t-lines"><span>reduce</span></span></a></div>
|
|
<div><span class="t-lines"><span><span class="t-mark-rev t-since-cxx17">(C++17)</span></span></span></div>
|
|
</div>
|
|
</td>
|
|
<td>类似 <span class="t-lc"><a href="cpp-algorithm-accumulate.html">std::accumulate</a></span>,但不依序执行<br />
|
|
<span class="t-mark">(函数模板)</span></td>
|
|
</tr>
|
|
<tr class="t-dsc">
|
|
<td>
|
|
<div class="t-dsc-member-div">
|
|
<div><a href="cpp-algorithm-transform_reduce.html"><span class="t-lines"><span>transform_reduce</span></span></a></div>
|
|
<div><span class="t-lines"><span><span class="t-mark-rev t-since-cxx17">(C++17)</span></span></span></div>
|
|
</div>
|
|
</td>
|
|
<td>应用一个函数对象,然后以乱序规约<br />
|
|
<span class="t-mark">(函数模板)</span></td>
|
|
</tr>
|
|
<tr class="t-dsc">
|
|
<td>
|
|
<div class="t-dsc-member-div">
|
|
<div><a href="cpp-algorithm-inner_product.html"><span class="t-lines"><span>inner_product</span></span></a></div>
|
|
</div>
|
|
</td>
|
|
<td>计算两个范围的元素的内积<br />
|
|
<span class="t-mark">(函数模板)</span></td>
|
|
</tr>
|
|
<tr class="t-dsc">
|
|
<td>
|
|
<div class="t-dsc-member-div">
|
|
<div><a href="cpp-algorithm-adjacent_difference.html"><span class="t-lines"><span>adjacent_difference</span></span></a></div>
|
|
</div>
|
|
</td>
|
|
<td>计算范围内各相邻元素之间的差<br />
|
|
<span class="t-mark">(函数模板)</span></td>
|
|
</tr>
|
|
<tr class="t-dsc">
|
|
<td>
|
|
<div class="t-dsc-member-div">
|
|
<div><a href="cpp-algorithm-partial_sum.html"><span class="t-lines"><span>partial_sum</span></span></a></div>
|
|
</div>
|
|
</td>
|
|
<td>计算范围内元素的部分和<br />
|
|
<span class="t-mark">(函数模板)</span></td>
|
|
</tr>
|
|
<tr class="t-dsc">
|
|
<td>
|
|
<div class="t-dsc-member-div">
|
|
<div><a href="cpp-algorithm-inclusive_scan.html"><span class="t-lines"><span>inclusive_scan</span></span></a></div>
|
|
<div><span class="t-lines"><span><span class="t-mark-rev t-since-cxx17">(C++17)</span></span></span></div>
|
|
</div>
|
|
</td>
|
|
<td>类似 <span class="t-lc"><a href="cpp-algorithm-partial_sum.html">std::partial_sum</a></span>,第 i 个和中包含第 i 个输入<br />
|
|
<span class="t-mark">(函数模板)</span></td>
|
|
</tr>
|
|
<tr class="t-dsc">
|
|
<td>
|
|
<div class="t-dsc-member-div">
|
|
<div><a href="cpp-algorithm-exclusive_scan.html"><span class="t-lines"><span>exclusive_scan</span></span></a></div>
|
|
<div><span class="t-lines"><span><span class="t-mark-rev t-since-cxx17">(C++17)</span></span></span></div>
|
|
</div>
|
|
</td>
|
|
<td>类似 <span class="t-lc"><a href="cpp-algorithm-partial_sum.html">std::partial_sum</a></span>,第 i 个和中排除第 i 个输入<br />
|
|
<span class="t-mark">(函数模板)</span></td>
|
|
</tr>
|
|
<tr class="t-dsc">
|
|
<td>
|
|
<div class="t-dsc-member-div">
|
|
<div><a href="cpp-algorithm-transform_inclusive_scan.html"><span class="t-lines"><span>transform_inclusive_scan</span></span></a></div>
|
|
<div><span class="t-lines"><span><span class="t-mark-rev t-since-cxx17">(C++17)</span></span></span></div>
|
|
</div>
|
|
</td>
|
|
<td>应用一个函数对象,然后进行包含扫描<br />
|
|
<span class="t-mark">(函数模板)</span></td>
|
|
</tr>
|
|
<tr class="t-dsc">
|
|
<td>
|
|
<div class="t-dsc-member-div">
|
|
<div><a href="cpp-algorithm-transform_exclusive_scan.html"><span class="t-lines"><span>transform_exclusive_scan</span></span></a></div>
|
|
<div><span class="t-lines"><span><span class="t-mark-rev t-since-cxx17">(C++17)</span></span></span></div>
|
|
</div>
|
|
</td>
|
|
<td>应用一个函数对象,然后进行排除扫描<br />
|
|
<span class="t-mark">(函数模板)</span></td>
|
|
</tr>
|
|
<tr class="t-dsc">
|
|
<td>
|
|
<div class="t-dsc-member-div">
|
|
<div><a href="cpp-numeric-gcd.html"><span class="t-lines"><span>gcd</span></span></a></div>
|
|
<div><span class="t-lines"><span><span class="t-mark-rev t-since-cxx17">(C++17)</span></span></span></div>
|
|
</div>
|
|
</td>
|
|
<td>返回二个整数最大公约数的 <code>constexpr</code> 函数模板<br />
|
|
<span class="t-mark">(函数模板)</span></td>
|
|
</tr>
|
|
<tr class="t-dsc">
|
|
<td>
|
|
<div class="t-dsc-member-div">
|
|
<div><a href="cpp-numeric-lcm.html"><span class="t-lines"><span>lcm</span></span></a></div>
|
|
<div><span class="t-lines"><span><span class="t-mark-rev t-since-cxx17">(C++17)</span></span></span></div>
|
|
</div>
|
|
</td>
|
|
<td>返回二个整数最小公倍数的 <code>constexpr</code> 函数模板<br />
|
|
<span class="t-mark">(函数模板)</span></td>
|
|
</tr>
|
|
<tr class="t-dsc">
|
|
<td>
|
|
<div class="t-dsc-member-div">
|
|
<div><a href="cpp-numeric-midpoint.html"><span class="t-lines"><span>midpoint</span></span></a></div>
|
|
<div><span class="t-lines"><span><span class="t-mark-rev t-since-cxx20">(C++20)</span></span></span></div>
|
|
</div>
|
|
</td>
|
|
<td>两个数值或指针间的中点<br />
|
|
<span class="t-mark">(函数模板)</span></td>
|
|
</tr>
|
|
</table>
|
|
<h3><span class="mw-headline" id=".E6.A6.82.E8.A6.81">概要</span></h3>
|
|
<div dir="ltr" class="mw-geshi" style="text-align: left;">
|
|
<div class="cpp source-cpp">
|
|
<pre class="de1"><span class="kw1">namespace</span> std <span class="br0">{</span>
|
|
<span class="co1">// 累加</span>
|
|
<span class="kw1">template</span><span class="sy1"><</span><span class="kw1">class</span> InputIt, <span class="kw1">class</span> T<span class="sy1">></span>
|
|
<span class="kw4">constexpr</span> T accumulate<span class="br0">(</span>InputIt first, InputIt last, T init<span class="br0">)</span><span class="sy4">;</span>
|
|
<span class="kw1">template</span><span class="sy1"><</span><span class="kw1">class</span> InputIt, <span class="kw1">class</span> T, <span class="kw1">class</span> BinaryOperation<span class="sy1">></span>
|
|
<span class="kw4">constexpr</span> T accumulate<span class="br0">(</span>InputIt first, InputIt last, T init, BinaryOperation binary_op<span class="br0">)</span><span class="sy4">;</span>
|
|
|
|
<span class="co1">// 规约</span>
|
|
<span class="kw1">template</span><span class="sy1"><</span><span class="kw1">class</span> InputIt<span class="sy1">></span>
|
|
<span class="kw4">constexpr</span> <span class="kw1">typename</span> iterator_traits<span class="sy1"><</span>InputIt<span class="sy1">></span><span class="sy4">::</span><span class="me2">value_type</span>
|
|
reduce<span class="br0">(</span>InputIt first, InputIt last<span class="br0">)</span><span class="sy4">;</span>
|
|
<span class="kw1">template</span><span class="sy1"><</span><span class="kw1">class</span> InputIt, <span class="kw1">class</span> T<span class="sy1">></span>
|
|
<span class="kw4">constexpr</span> T reduce<span class="br0">(</span>InputIt first, InputIt last, T init<span class="br0">)</span><span class="sy4">;</span>
|
|
<span class="kw1">template</span><span class="sy1"><</span><span class="kw1">class</span> InputIt, <span class="kw1">class</span> T, <span class="kw1">class</span> BinaryOperation<span class="sy1">></span>
|
|
<span class="kw4">constexpr</span> T reduce<span class="br0">(</span>InputIt first, InputIt last, T init, BinaryOperation binary_op<span class="br0">)</span><span class="sy4">;</span>
|
|
<span class="kw1">template</span><span class="sy1"><</span><span class="kw1">class</span> ExecutionPolicy, <span class="kw1">class</span> ForwardIt<span class="sy1">></span>
|
|
<span class="kw1">typename</span> iterator_traits<span class="sy1"><</span>ForwardIt<span class="sy1">></span><span class="sy4">::</span><span class="me2">value_type</span>
|
|
reduce<span class="br0">(</span>ExecutionPolicy<span class="sy3">&&</span> exec,
|
|
ForwardIt first, ForwardIt last<span class="br0">)</span><span class="sy4">;</span>
|
|
<span class="kw1">template</span><span class="sy1"><</span><span class="kw1">class</span> ExecutionPolicy, <span class="kw1">class</span> ForwardIt, <span class="kw1">class</span> T<span class="sy1">></span>
|
|
T reduce<span class="br0">(</span>ExecutionPolicy<span class="sy3">&&</span> exec,
|
|
ForwardIt first, ForwardIt last, T init<span class="br0">)</span><span class="sy4">;</span>
|
|
<span class="kw1">template</span><span class="sy1"><</span><span class="kw1">class</span> ExecutionPolicy, <span class="kw1">class</span> ForwardIt, <span class="kw1">class</span> T, <span class="kw1">class</span> BinaryOperation<span class="sy1">></span>
|
|
T reduce<span class="br0">(</span>ExecutionPolicy<span class="sy3">&&</span> exec,
|
|
ForwardIt first, ForwardIt last, T init, BinaryOperation binary_op<span class="br0">)</span><span class="sy4">;</span>
|
|
|
|
<span class="co1">// 内积</span>
|
|
<span class="kw1">template</span><span class="sy1"><</span><span class="kw1">class</span> InputIt1, <span class="kw1">class</span> InputIt2, <span class="kw1">class</span> T<span class="sy1">></span>
|
|
<span class="kw4">constexpr</span> T inner_product<span class="br0">(</span>InputIt1 first1, InputIt1 last1,
|
|
InputIt2 first2, T init<span class="br0">)</span><span class="sy4">;</span>
|
|
<span class="kw1">template</span><span class="sy1"><</span><span class="kw1">class</span> InputIt1, <span class="kw1">class</span> InputIt2, <span class="kw1">class</span> T,
|
|
<span class="kw1">class</span> BinaryOperation1, <span class="kw1">class</span> BinaryOperation2<span class="sy1">></span>
|
|
<span class="kw4">constexpr</span> T inner_product<span class="br0">(</span>InputIt1 first1, InputIt1 last1,
|
|
InputIt2 first2, T init,
|
|
BinaryOperation1 binary_op1,
|
|
BinaryOperation2 binary_op2<span class="br0">)</span><span class="sy4">;</span>
|
|
|
|
<span class="co1">// 变换规约</span>
|
|
<span class="kw1">template</span><span class="sy1"><</span><span class="kw1">class</span> InputIt1, <span class="kw1">class</span> InputIt2, <span class="kw1">class</span> T<span class="sy1">></span>
|
|
<span class="kw4">constexpr</span> T transform_reduce<span class="br0">(</span>InputIt1 first1, InputIt1 last1,
|
|
InputIt2 first2,
|
|
T init<span class="br0">)</span><span class="sy4">;</span>
|
|
<span class="kw1">template</span><span class="sy1"><</span><span class="kw1">class</span> InputIt1, <span class="kw1">class</span> InputIt2, <span class="kw1">class</span> T,
|
|
<span class="kw1">class</span> BinaryOperation1, <span class="kw1">class</span> BinaryOperation2<span class="sy1">></span>
|
|
<span class="kw4">constexpr</span> T transform_reduce<span class="br0">(</span>InputIt1 first1, InputIt1 last1,
|
|
InputIt2 first2,
|
|
T init,
|
|
BinaryOperation1 binary_op1,
|
|
BinaryOperation2 binary_op2<span class="br0">)</span><span class="sy4">;</span>
|
|
<span class="kw1">template</span><span class="sy1"><</span><span class="kw1">class</span> InputIt, <span class="kw1">class</span> T,
|
|
<span class="kw1">class</span> BinaryOperation, <span class="kw1">class</span> UnaryOperation<span class="sy1">></span>
|
|
<span class="kw4">constexpr</span> T transform_reduce<span class="br0">(</span>InputIt first, InputIt last,
|
|
T init,
|
|
BinaryOperation binary_op, UnaryOperation unary_op<span class="br0">)</span><span class="sy4">;</span>
|
|
<span class="kw1">template</span><span class="sy1"><</span><span class="kw1">class</span> ExecutionPolicy,
|
|
<span class="kw1">class</span> ForwardIt1, <span class="kw1">class</span> ForwardIt2, <span class="kw1">class</span> T<span class="sy1">></span>
|
|
T transform_reduce<span class="br0">(</span>ExecutionPolicy<span class="sy3">&&</span> exec,
|
|
ForwardIt1 first1, ForwardIt1 last1,
|
|
ForwardIt2 first2,
|
|
T init<span class="br0">)</span><span class="sy4">;</span>
|
|
<span class="kw1">template</span><span class="sy1"><</span><span class="kw1">class</span> ExecutionPolicy,
|
|
<span class="kw1">class</span> ForwardIt1, <span class="kw1">class</span> ForwardIt2, <span class="kw1">class</span> T,
|
|
<span class="kw1">class</span> BinaryOperation1, <span class="kw1">class</span> BinaryOperation2<span class="sy1">></span>
|
|
T transform_reduce<span class="br0">(</span>ExecutionPolicy<span class="sy3">&&</span> exec,
|
|
ForwardIt1 first1, ForwardIt1 last1,
|
|
ForwardIt2 first2,
|
|
T init,
|
|
BinaryOperation1 binary_op1,
|
|
BinaryOperation2 binary_op2<span class="br0">)</span><span class="sy4">;</span>
|
|
<span class="kw1">template</span><span class="sy1"><</span><span class="kw1">class</span> ExecutionPolicy,
|
|
<span class="kw1">class</span> ForwardIt, <span class="kw1">class</span> T,
|
|
<span class="kw1">class</span> BinaryOperation, <span class="kw1">class</span> UnaryOperation<span class="sy1">></span>
|
|
T transform_reduce<span class="br0">(</span>ExecutionPolicy<span class="sy3">&&</span> exec,
|
|
ForwardIt first, ForwardIt last,
|
|
T init,
|
|
BinaryOperation binary_op, UnaryOperation unary_op<span class="br0">)</span><span class="sy4">;</span>
|
|
|
|
<span class="co1">// 部分和</span>
|
|
<span class="kw1">template</span><span class="sy1"><</span><span class="kw1">class</span> InputIt, <span class="kw1">class</span> OutputIt<span class="sy1">></span>
|
|
<span class="kw4">constexpr</span> OutputIt partial_sum<span class="br0">(</span>InputIt first,
|
|
InputIt last,
|
|
OutputIt result<span class="br0">)</span><span class="sy4">;</span>
|
|
<span class="kw1">template</span><span class="sy1"><</span><span class="kw1">class</span> InputIt, <span class="kw1">class</span> OutputIt, <span class="kw1">class</span> BinaryOperation<span class="sy1">></span>
|
|
<span class="kw4">constexpr</span> OutputIt partial_sum<span class="br0">(</span>InputIt first,
|
|
InputIt last,
|
|
OutputIt result,
|
|
BinaryOperation binary_op<span class="br0">)</span><span class="sy4">;</span>
|
|
|
|
<span class="co1">// 排除扫描</span>
|
|
<span class="kw1">template</span><span class="sy1"><</span><span class="kw1">class</span> InputIt, <span class="kw1">class</span> OutputIt, <span class="kw1">class</span> T<span class="sy1">></span>
|
|
<span class="kw4">constexpr</span> OutputIt exclusive_scan<span class="br0">(</span>InputIt first, InputIt last,
|
|
OutputIt result,
|
|
T init<span class="br0">)</span><span class="sy4">;</span>
|
|
<span class="kw1">template</span><span class="sy1"><</span><span class="kw1">class</span> InputIt, <span class="kw1">class</span> OutputIt, <span class="kw1">class</span> T, <span class="kw1">class</span> BinaryOperation<span class="sy1">></span>
|
|
<span class="kw4">constexpr</span> OutputIt exclusive_scan<span class="br0">(</span>InputIt first, InputIt last,
|
|
OutputIt result,
|
|
T init, BinaryOperation binary_op<span class="br0">)</span><span class="sy4">;</span>
|
|
<span class="kw1">template</span><span class="sy1"><</span><span class="kw1">class</span> ExecutionPolicy, <span class="kw1">class</span> ForwardIt1, <span class="kw1">class</span> ForwardIt2, <span class="kw1">class</span> T<span class="sy1">></span>
|
|
ForwardIt2 exclusive_scan<span class="br0">(</span>ExecutionPolicy<span class="sy3">&&</span> exec,
|
|
ForwardIt1 first, ForwardIt1 last,
|
|
ForwardIt2 result,
|
|
T init<span class="br0">)</span><span class="sy4">;</span>
|
|
<span class="kw1">template</span><span class="sy1"><</span><span class="kw1">class</span> ExecutionPolicy, <span class="kw1">class</span> ForwardIt1, <span class="kw1">class</span> ForwardIt2, <span class="kw1">class</span> T,
|
|
<span class="kw1">class</span> BinaryOperation<span class="sy1">></span>
|
|
ForwardIt2 exclusive_scan<span class="br0">(</span>ExecutionPolicy<span class="sy3">&&</span> exec,
|
|
ForwardIt1 first, ForwardIt1 last,
|
|
ForwardIt2 result,
|
|
T init, BinaryOperation binary_op<span class="br0">)</span><span class="sy4">;</span>
|
|
|
|
<span class="co1">// 包含扫描</span>
|
|
<span class="kw1">template</span><span class="sy1"><</span><span class="kw1">class</span> InputIt, <span class="kw1">class</span> OutputIt<span class="sy1">></span>
|
|
<span class="kw4">constexpr</span> OutputIt inclusive_scan<span class="br0">(</span>InputIt first, InputIt last, OutputIt result<span class="br0">)</span><span class="sy4">;</span>
|
|
<span class="kw1">template</span><span class="sy1"><</span><span class="kw1">class</span> InputIt, <span class="kw1">class</span> OutputIt, <span class="kw1">class</span> BinaryOperation<span class="sy1">></span>
|
|
<span class="kw4">constexpr</span> OutputIt inclusive_scan<span class="br0">(</span>InputIt first, InputIt last,
|
|
OutputIt result,
|
|
BinaryOperation binary_op<span class="br0">)</span><span class="sy4">;</span>
|
|
<span class="kw1">template</span><span class="sy1"><</span><span class="kw1">class</span> InputIt, <span class="kw1">class</span> OutputIt, <span class="kw1">class</span> BinaryOperation, <span class="kw1">class</span> T<span class="sy1">></span>
|
|
<span class="kw4">constexpr</span> OutputIt inclusive_scan<span class="br0">(</span>InputIt first, InputIt last,
|
|
OutputIt result,
|
|
BinaryOperation binary_op, T init<span class="br0">)</span><span class="sy4">;</span>
|
|
<span class="kw1">template</span><span class="sy1"><</span><span class="kw1">class</span> ExecutionPolicy, <span class="kw1">class</span> ForwardIt1, <span class="kw1">class</span> ForwardIt2<span class="sy1">></span>
|
|
ForwardIt2 inclusive_scan<span class="br0">(</span>ExecutionPolicy<span class="sy3">&&</span> exec,
|
|
ForwardIt1 first, ForwardIt1 last,
|
|
ForwardIt2 result<span class="br0">)</span><span class="sy4">;</span>
|
|
<span class="kw1">template</span><span class="sy1"><</span><span class="kw1">class</span> ExecutionPolicy, <span class="kw1">class</span> ForwardIt1, <span class="kw1">class</span> ForwardIt2,
|
|
<span class="kw1">class</span> BinaryOperation<span class="sy1">></span>
|
|
ForwardIt2 inclusive_scan<span class="br0">(</span>ExecutionPolicy<span class="sy3">&&</span> exec,
|
|
ForwardIt1 first, ForwardIt1 last,
|
|
ForwardIt2 result,
|
|
BinaryOperation binary_op<span class="br0">)</span><span class="sy4">;</span>
|
|
<span class="kw1">template</span><span class="sy1"><</span><span class="kw1">class</span> ExecutionPolicy, <span class="kw1">class</span> ForwardIt1, <span class="kw1">class</span> ForwardIt2,
|
|
<span class="kw1">class</span> BinaryOperation, <span class="kw1">class</span> T<span class="sy1">></span>
|
|
ForwardIt2 inclusive_scan<span class="br0">(</span>ExecutionPolicy<span class="sy3">&&</span> exec,
|
|
ForwardIt1 first, ForwardIt1 last,
|
|
ForwardIt2 result,
|
|
BinaryOperation binary_op, T init<span class="br0">)</span><span class="sy4">;</span>
|
|
|
|
<span class="co1">// 变换排除扫描</span>
|
|
<span class="kw1">template</span><span class="sy1"><</span><span class="kw1">class</span> InputIt, <span class="kw1">class</span> OutputIt, <span class="kw1">class</span> T,
|
|
<span class="kw1">class</span> BinaryOperation, <span class="kw1">class</span> UnaryOperation<span class="sy1">></span>
|
|
<span class="kw4">constexpr</span> OutputIt transform_exclusive_scan<span class="br0">(</span>InputIt first, InputIt last,
|
|
OutputIt result,
|
|
T init,
|
|
BinaryOperation binary_op,
|
|
UnaryOperation unary_op<span class="br0">)</span><span class="sy4">;</span>
|
|
<span class="kw1">template</span><span class="sy1"><</span><span class="kw1">class</span> ExecutionPolicy,
|
|
<span class="kw1">class</span> ForwardIt1, <span class="kw1">class</span> ForwardIt2, <span class="kw1">class</span> T,
|
|
<span class="kw1">class</span> BinaryOperation, <span class="kw1">class</span> UnaryOperation<span class="sy1">></span>
|
|
ForwardIt2 transform_exclusive_scan<span class="br0">(</span>ExecutionPolicy<span class="sy3">&&</span> exec,
|
|
ForwardIt1 first, ForwardIt1 last,
|
|
ForwardIt2 result,
|
|
T init,
|
|
BinaryOperation binary_op,
|
|
UnaryOperation unary_op<span class="br0">)</span><span class="sy4">;</span>
|
|
|
|
<span class="co1">// 变换包含扫描</span>
|
|
<span class="kw1">template</span><span class="sy1"><</span><span class="kw1">class</span> InputIt, <span class="kw1">class</span> OutputIt,
|
|
<span class="kw1">class</span> BinaryOperation, <span class="kw1">class</span> UnaryOperation<span class="sy1">></span>
|
|
<span class="kw4">constexpr</span> OutputIt transform_inclusive_scan<span class="br0">(</span>InputIt first, InputIt last,
|
|
OutputIt result,
|
|
BinaryOperation binary_op,
|
|
UnaryOperation unary_op<span class="br0">)</span><span class="sy4">;</span>
|
|
<span class="kw1">template</span><span class="sy1"><</span><span class="kw1">class</span> InputIt, <span class="kw1">class</span> OutputIt,
|
|
<span class="kw1">class</span> BinaryOperation, <span class="kw1">class</span> UnaryOperation, <span class="kw1">class</span> T<span class="sy1">></span>
|
|
<span class="kw4">constexpr</span> OutputIt transform_inclusive_scan<span class="br0">(</span>InputIt first, InputIt last,
|
|
OutputIt result,
|
|
BinaryOperation binary_op,
|
|
UnaryOperation unary_op,
|
|
T init<span class="br0">)</span><span class="sy4">;</span>
|
|
<span class="kw1">template</span><span class="sy1"><</span><span class="kw1">class</span> ExecutionPolicy,
|
|
<span class="kw1">class</span> ForwardIt1, <span class="kw1">class</span> ForwardIt2,
|
|
<span class="kw1">class</span> BinaryOperation, <span class="kw1">class</span> UnaryOperation<span class="sy1">></span>
|
|
ForwardIt2 transform_inclusive_scan<span class="br0">(</span>ExecutionPolicy<span class="sy3">&&</span> exec,
|
|
ForwardIt1 first, ForwardIt1 last,
|
|
ForwardIt2 result,
|
|
BinaryOperation binary_op,
|
|
UnaryOperation unary_op<span class="br0">)</span><span class="sy4">;</span>
|
|
<span class="kw1">template</span><span class="sy1"><</span><span class="kw1">class</span> ExecutionPolicy,
|
|
<span class="kw1">class</span> ForwardIt1, <span class="kw1">class</span> ForwardIt2,
|
|
<span class="kw1">class</span> BinaryOperation, <span class="kw1">class</span> UnaryOperation, <span class="kw1">class</span> T<span class="sy1">></span>
|
|
ForwardIt2 transform_inclusive_scan<span class="br0">(</span>ExecutionPolicy<span class="sy3">&&</span> exec,
|
|
ForwardIt1 first, ForwardIt1 last,
|
|
ForwardIt2 result,
|
|
BinaryOperation binary_op,
|
|
UnaryOperation unary_op,
|
|
T init<span class="br0">)</span><span class="sy4">;</span>
|
|
|
|
<span class="co1">// 相邻差</span>
|
|
<span class="kw1">template</span><span class="sy1"><</span><span class="kw1">class</span> InputIt, <span class="kw1">class</span> OutputIt<span class="sy1">></span>
|
|
<span class="kw4">constexpr</span> OutputIt adjacent_difference<span class="br0">(</span>InputIt first, InputIt last,
|
|
OutputIt result<span class="br0">)</span><span class="sy4">;</span>
|
|
<span class="kw1">template</span><span class="sy1"><</span><span class="kw1">class</span> InputIt, <span class="kw1">class</span> OutputIt, <span class="kw1">class</span> BinaryOperation<span class="sy1">></span>
|
|
<span class="kw4">constexpr</span> OutputIt adjacent_difference<span class="br0">(</span>InputIt first, InputIt last,
|
|
OutputIt result,
|
|
BinaryOperation binary_op<span class="br0">)</span><span class="sy4">;</span>
|
|
<span class="kw1">template</span><span class="sy1"><</span><span class="kw1">class</span> ExecutionPolicy, <span class="kw1">class</span> ForwardIt1, <span class="kw1">class</span> ForwardIt2<span class="sy1">></span>
|
|
ForwardIt2 adjacent_difference<span class="br0">(</span>ExecutionPolicy<span class="sy3">&&</span> exec,
|
|
ForwardIt1 first, ForwardIt1 last,
|
|
ForwardIt2 result<span class="br0">)</span><span class="sy4">;</span>
|
|
<span class="kw1">template</span><span class="sy1"><</span><span class="kw1">class</span> ExecutionPolicy, <span class="kw1">class</span> ForwardIt1, <span class="kw1">class</span> ForwardIt2,
|
|
<span class="kw1">class</span> BinaryOperation<span class="sy1">></span>
|
|
ForwardIt2 adjacent_difference<span class="br0">(</span>ExecutionPolicy<span class="sy3">&&</span> exec,
|
|
ForwardIt1 first, ForwardIt1 last,
|
|
ForwardIt2 result,
|
|
BinaryOperation binary_op<span class="br0">)</span><span class="sy4">;</span>
|
|
|
|
<span class="co1">// iota</span>
|
|
<span class="kw1">template</span><span class="sy1"><</span><span class="kw1">class</span> ForwardIt, <span class="kw1">class</span> T<span class="sy1">></span>
|
|
<span class="kw4">constexpr</span> <span class="kw4">void</span> iota<span class="br0">(</span>ForwardIt first, ForwardIt last, T value<span class="br0">)</span><span class="sy4">;</span>
|
|
|
|
<span class="co1">// 最大公约数</span>
|
|
<span class="kw1">template</span><span class="sy1"><</span><span class="kw1">class</span> M, <span class="kw1">class</span> N<span class="sy1">></span>
|
|
<span class="kw4">constexpr</span> common_type_t<span class="sy1"><</span>M, N<span class="sy1">></span> gcd<span class="br0">(</span>M m, N n<span class="br0">)</span><span class="sy4">;</span>
|
|
|
|
<span class="co1">// 最小公倍数</span>
|
|
<span class="kw1">template</span><span class="sy1"><</span><span class="kw1">class</span> M, <span class="kw1">class</span> N<span class="sy1">></span>
|
|
<span class="kw4">constexpr</span> common_type_t<span class="sy1"><</span>M, N<span class="sy1">></span> lcm<span class="br0">(</span>M m, N n<span class="br0">)</span><span class="sy4">;</span>
|
|
|
|
<span class="co1">// 中点</span>
|
|
<span class="kw1">template</span><span class="sy1"><</span><span class="kw1">class</span> T<span class="sy1">></span>
|
|
<span class="kw4">constexpr</span> T midpoint<span class="br0">(</span>T a, T b<span class="br0">)</span> <span class="kw1">noexcept</span><span class="sy4">;</span>
|
|
<span class="kw1">template</span><span class="sy1"><</span><span class="kw1">class</span> T<span class="sy1">></span>
|
|
<span class="kw4">constexpr</span> T<span class="sy2">*</span> midpoint<span class="br0">(</span>T<span class="sy2">*</span> a, T<span class="sy2">*</span> b<span class="br0">)</span><span class="sy4">;</span>
|
|
<span class="br0">}</span></pre></div>
|
|
</div>
|
|
</div>
|
|
<div class="visualClear"></div>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
</body>
|
|
</html>
|