269 lines
18 KiB
HTML
269 lines
18 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>标准库头文件 <experimental/ranges/range></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_experimental_ranges_range 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> <experimental/ranges/range></h1>
|
|
<div id="bodyContent">
|
|
<div id="contentSub"><span class="subpages">< <a href="cpp.html">cpp</a>‎ | <a href="cpp-header.html">header</a>‎ | <a href="cpp-header-experimental.html">experimental</a></span></div>
|
|
<div id="mw-content-text" lang="zh" dir="ltr" class="mw-content-ltr" xml:lang="zh">
|
|
<p>此头文件是<a href="cpp-experimental-ranges.html">范围</a>库的一部分。</p>
|
|
<h3><span class="mw-headline" id=".E8.8C.83.E5.9B.B4.E6.A6.82.E5.BF.B5">范围概念</span></h3>
|
|
<table class="t-dsc-begin">
|
|
<tr class="t-dsc-header">
|
|
<td colspan="2">
|
|
<div>定义于命名空间 <code>std::experimental::ranges</code></div>
|
|
</td>
|
|
</tr>
|
|
<tr class="t-dsc">
|
|
<td>
|
|
<div class="t-dsc-member-div">
|
|
<div><a href="cpp-experimental-ranges-range-Range.html"><span class="t-lines"><span>Range</span></span></a></div>
|
|
</div>
|
|
</td>
|
|
<td>指定类型为范围,即它提供 <code>begin</code> 迭代器和 <code>end</code> 哨位<br />
|
|
<span class="t-mark">(概念)</span></td>
|
|
</tr>
|
|
<tr class="t-dsc">
|
|
<td>
|
|
<div class="t-dsc-member-div">
|
|
<div><a href="cpp-experimental-ranges-range-SizedRange.html"><span class="t-lines"><span>SizedRange</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-experimental-ranges-range-View.html"><span class="t-lines"><span>View</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-experimental-ranges-range-BoundedRange.html"><span class="t-lines"><span>BoundedRange</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-experimental-ranges-range-InputRange.html"><span class="t-lines"><span>InputRange</span></span></a></div>
|
|
</div>
|
|
</td>
|
|
<td>指定范围的迭代器满足 <a href="cpp-experimental-ranges-iterator-InputIterator.html"><code>InputIterator</code></a><br />
|
|
<span class="t-mark">(概念)</span></td>
|
|
</tr>
|
|
<tr class="t-dsc">
|
|
<td>
|
|
<div class="t-dsc-member-div">
|
|
<div><a href="cpp-experimental-ranges-range-OutputRange.html"><span class="t-lines"><span>OutputRange</span></span></a></div>
|
|
</div>
|
|
</td>
|
|
<td>指定范围的迭代器满足 <a href="cpp-experimental-ranges-iterator-OutputIterator.html"><code>OutputIterator</code></a><br />
|
|
<span class="t-mark">(概念)</span></td>
|
|
</tr>
|
|
<tr class="t-dsc">
|
|
<td>
|
|
<div class="t-dsc-member-div">
|
|
<div><a href="cpp-experimental-ranges-range-ForwardRange.html"><span class="t-lines"><span>ForwardRange</span></span></a></div>
|
|
</div>
|
|
</td>
|
|
<td>指定范围的迭代器满足 <a href="cpp-experimental-ranges-iterator-ForwardIterator.html"><code>ForwardIterator</code></a><br />
|
|
<span class="t-mark">(概念)</span></td>
|
|
</tr>
|
|
<tr class="t-dsc">
|
|
<td>
|
|
<div class="t-dsc-member-div">
|
|
<div><a href="cpp-experimental-ranges-range-BidirectionalRange.html"><span class="t-lines"><span>BidirectionalRange</span></span></a></div>
|
|
</div>
|
|
</td>
|
|
<td>指定范围的迭代器满足 <a href="cpp-experimental-ranges-iterator-BidirectionalIterator.html"><code>BidirectionalIterator</code></a><br />
|
|
<span class="t-mark">(概念)</span></td>
|
|
</tr>
|
|
<tr class="t-dsc">
|
|
<td>
|
|
<div class="t-dsc-member-div">
|
|
<div><a href="cpp-experimental-ranges-range-RandomAccessRange.html"><span class="t-lines"><span>RandomAccessRange</span></span></a></div>
|
|
</div>
|
|
</td>
|
|
<td>指定范围的迭代器满足 <a href="cpp-experimental-ranges-iterator-RandomAccessIterator.html"><code>RandomAccessIterator</code></a><br />
|
|
<span class="t-mark">(概念)</span></td>
|
|
</tr>
|
|
</table>
|
|
<h3><span class="mw-headline" id=".E8.8C.83.E5.9B.B4.E8.AE.BF.E9.97.AE">范围访问</span></h3>
|
|
<table class="t-dsc-begin">
|
|
<tr class="t-dsc-header">
|
|
<td colspan="2">
|
|
<div>定义于命名空间 <code>std::experimental::ranges</code></div>
|
|
</td>
|
|
</tr>
|
|
<tr class="t-dsc">
|
|
<td>
|
|
<div class="t-dsc-member-div">
|
|
<div><a href="https://zh.cppreference.com/mwiki/index.php?title=cpp/experimental/ranges/range/begin&action=edit&redlink=1" class="new" title="cpp/experimental/ranges/range/begin(页面不存在)"><span class="t-lines"><span>begin</span><span>cbegin</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="https://zh.cppreference.com/mwiki/index.php?title=cpp/experimental/ranges/range/end&action=edit&redlink=1" class="new" title="cpp/experimental/ranges/range/end(页面不存在)"><span class="t-lines"><span>end</span><span>cend</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="https://zh.cppreference.com/mwiki/index.php?title=cpp/experimental/ranges/range/rbegin&action=edit&redlink=1" class="new" title="cpp/experimental/ranges/range/rbegin(页面不存在)"><span class="t-lines"><span>rbegin</span><span>crbegin</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="https://zh.cppreference.com/mwiki/index.php?title=cpp/experimental/ranges/range/rend&action=edit&redlink=1" class="new" title="cpp/experimental/ranges/range/rend(页面不存在)"><span class="t-lines"><span>rend</span><span>crend</span></span></a></div>
|
|
</div>
|
|
</td>
|
|
<td>获得指向范围的逆向尾迭代器<br />
|
|
<span class="t-mark">(定制点对象)</span></td>
|
|
</tr>
|
|
</table>
|
|
<h3><span class="mw-headline" id=".E8.8C.83.E5.9B.B4.E5.8E.9F.E8.AF.AD">范围原语</span></h3>
|
|
<table class="t-dsc-begin">
|
|
<tr class="t-dsc-header">
|
|
<td colspan="2">
|
|
<div>定义于命名空间 <code>std::experimental::ranges</code></div>
|
|
</td>
|
|
</tr>
|
|
<tr class="t-dsc">
|
|
<td>
|
|
<div class="t-dsc-member-div">
|
|
<div><a href="https://zh.cppreference.com/mwiki/index.php?title=cpp/experimental/ranges/range/size&action=edit&redlink=1" class="new" title="cpp/experimental/ranges/range/size(页面不存在)"><span class="t-lines"><span>size</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="https://zh.cppreference.com/mwiki/index.php?title=cpp/experimental/ranges/range/empty&action=edit&redlink=1" class="new" title="cpp/experimental/ranges/range/empty(页面不存在)"><span class="t-lines"><span>empty</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="https://zh.cppreference.com/mwiki/index.php?title=cpp/experimental/ranges/range/data&action=edit&redlink=1" class="new" title="cpp/experimental/ranges/range/data(页面不存在)"><span class="t-lines"><span>data</span><span>cdata</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-experimental-ranges-range-iterator_t.html"><span class="t-lines"><span>iterator_t</span><span>sentinel_t</span></span></a></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="co2">#include <experimental/ranges/iterator></span>
|
|
|
|
<span class="kw1">namespace</span> std <span class="br0">{</span> <span class="kw1">namespace</span> experimental <span class="br0">{</span> <span class="kw1">namespace</span> ranges <span class="br0">{</span> <span class="kw1">inline</span> <span class="kw1">namespace</span> v1 <span class="br0">{</span>
|
|
|
|
<span class="kw1">namespace</span> <span class="br0">{</span>
|
|
<span class="kw4">constexpr</span> <span class="coMULTI">/* 未指明 */</span> begin <span class="sy1">=</span> <span class="coMULTI">/* 未指明 */</span><span class="sy4">;</span>
|
|
<span class="kw4">constexpr</span> <span class="coMULTI">/* 未指明 */</span> end <span class="sy1">=</span> <span class="coMULTI">/* 未指明 */</span><span class="sy4">;</span>
|
|
<span class="kw4">constexpr</span> <span class="coMULTI">/* 未指明 */</span> cbegin <span class="sy1">=</span> <span class="coMULTI">/* 未指明 */</span><span class="sy4">;</span>
|
|
<span class="kw4">constexpr</span> <span class="coMULTI">/* 未指明 */</span> cend <span class="sy1">=</span> <span class="coMULTI">/* 未指明 */</span><span class="sy4">;</span>
|
|
<span class="kw4">constexpr</span> <span class="coMULTI">/* 未指明 */</span> rbegin <span class="sy1">=</span> <span class="coMULTI">/* 未指明 */</span><span class="sy4">;</span>
|
|
<span class="kw4">constexpr</span> <span class="coMULTI">/* 未指明 */</span> rend <span class="sy1">=</span> <span class="coMULTI">/* 未指明 */</span><span class="sy4">;</span>
|
|
<span class="kw4">constexpr</span> <span class="coMULTI">/* 未指明 */</span> crbegin <span class="sy1">=</span> <span class="coMULTI">/* 未指明 */</span><span class="sy4">;</span>
|
|
<span class="kw4">constexpr</span> <span class="coMULTI">/* 未指明 */</span> crend <span class="sy1">=</span> <span class="coMULTI">/* 未指明 */</span><span class="sy4">;</span>
|
|
<span class="br0">}</span>
|
|
|
|
<span class="kw1">namespace</span> <span class="br0">{</span>
|
|
<span class="kw4">constexpr</span> <span class="coMULTI">/* 未指明 */</span> size <span class="sy1">=</span> <span class="coMULTI">/* 未指明 */</span><span class="sy4">;</span>
|
|
<span class="kw4">constexpr</span> <span class="coMULTI">/* 未指明 */</span> empty <span class="sy1">=</span> <span class="coMULTI">/* 未指明 */</span><span class="sy4">;</span>
|
|
<span class="kw4">constexpr</span> <span class="coMULTI">/* 未指明 */</span> data <span class="sy1">=</span> <span class="coMULTI">/* 未指明 */</span><span class="sy4">;</span>
|
|
<span class="kw4">constexpr</span> <span class="coMULTI">/* 未指明 */</span> cdata <span class="sy1">=</span> <span class="coMULTI">/* 未指明 */</span><span class="sy4">;</span>
|
|
<span class="br0">}</span>
|
|
|
|
<span class="kw1">template</span> <span class="sy1"><</span><span class="kw1">class</span> T<span class="sy1">></span>
|
|
<span class="kw1">using</span> iterator_t <span class="sy1">=</span> decltype<span class="br0">(</span>ranges<span class="sy4">::</span><span class="me2">begin</span><span class="br0">(</span>declval<span class="sy1"><</span>T<span class="sy3">&</span><span class="sy1">></span><span class="br0">(</span><span class="br0">)</span><span class="br0">)</span><span class="br0">)</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="kw1">using</span> sentinel_t <span class="sy1">=</span> decltype<span class="br0">(</span>ranges<span class="sy4">::</span><span class="me2">end</span><span class="br0">(</span>declval<span class="sy1"><</span>T<span class="sy3">&</span><span class="sy1">></span><span class="br0">(</span><span class="br0">)</span><span class="br0">)</span><span class="br0">)</span><span class="sy4">;</span>
|
|
|
|
<span class="kw1">template</span> <span class="sy1"><</span><span class="kw1">class</span><span class="sy1">></span>
|
|
<span class="kw4">constexpr</span> <span class="kw4">bool</span> disable_sized_range <span class="sy1">=</span> <span class="kw2">false</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="kw1">struct</span> enable_view <span class="br0">{</span> <span class="br0">}</span><span class="sy4">;</span>
|
|
|
|
<span class="kw1">struct</span> view_base <span class="br0">{</span> <span class="br0">}</span><span class="sy4">;</span>
|
|
|
|
<span class="kw1">template</span> <span class="sy1"><</span><span class="kw1">class</span> T<span class="sy1">></span>
|
|
concept <span class="kw4">bool</span> Range <span class="sy1">=</span> <span class="coMULTI">/* 见定义 */</span><span class="sy4">;</span>
|
|
|
|
<span class="kw1">template</span> <span class="sy1"><</span><span class="kw1">class</span> T<span class="sy1">></span>
|
|
concept <span class="kw4">bool</span> SizedRange <span class="sy1">=</span> <span class="coMULTI">/* 见定义 */</span><span class="sy4">;</span>
|
|
|
|
<span class="kw1">template</span> <span class="sy1"><</span><span class="kw1">class</span> T<span class="sy1">></span>
|
|
concept <span class="kw4">bool</span> View <span class="sy1">=</span> <span class="coMULTI">/* 见定义 */</span><span class="sy4">;</span>
|
|
|
|
<span class="kw1">template</span> <span class="sy1"><</span><span class="kw1">class</span> T<span class="sy1">></span>
|
|
concept <span class="kw4">bool</span> BoundedRange <span class="sy1">=</span> <span class="coMULTI">/* 见定义 */</span><span class="sy4">;</span>
|
|
|
|
<span class="kw1">template</span> <span class="sy1"><</span><span class="kw1">class</span> T<span class="sy1">></span>
|
|
concept <span class="kw4">bool</span> InputRange <span class="sy1">=</span> <span class="coMULTI">/* 见定义 */</span><span class="sy4">;</span>
|
|
|
|
<span class="kw1">template</span> <span class="sy1"><</span><span class="kw1">class</span> R, <span class="kw1">class</span> T<span class="sy1">></span>
|
|
concept <span class="kw4">bool</span> OutputRange <span class="sy1">=</span> <span class="coMULTI">/* 见定义 */</span><span class="sy4">;</span>
|
|
|
|
<span class="kw1">template</span> <span class="sy1"><</span><span class="kw1">class</span> T<span class="sy1">></span>
|
|
concept <span class="kw4">bool</span> ForwardRange <span class="sy1">=</span> <span class="coMULTI">/* 见定义 */</span><span class="sy4">;</span>
|
|
|
|
<span class="kw1">template</span> <span class="sy1"><</span><span class="kw1">class</span> T<span class="sy1">></span>
|
|
concept <span class="kw4">bool</span> BidirectionalRange <span class="sy1">=</span> <span class="coMULTI">/* 见定义 */</span><span class="sy4">;</span>
|
|
|
|
<span class="kw1">template</span> <span class="sy1"><</span><span class="kw1">class</span> T<span class="sy1">></span>
|
|
concept <span class="kw4">bool</span> RandomAccessRange <span class="sy1">=</span> <span class="coMULTI">/* 见定义 */</span><span class="sy4">;</span>
|
|
|
|
<span class="br0">}</span><span class="br0">}</span><span class="br0">}</span><span class="br0">}</span></pre></div>
|
|
</div>
|
|
</div>
|
|
<div class="visualClear"></div>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
</body>
|
|
</html>
|