Files
hustoj/web/cppreference-zh/chmhelp/cpp-language-range-for.html
2025-08-01 12:57:54 +08:00

318 lines
33 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>&#22522;&#20110;&#33539;&#22260;&#30340; for &#24490;&#29615; (C++11 &#36215;)</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_language_range-for skin-cppreference2 action-view cpp-navbar">
<div id="cpp-content-base">
<div id="content"><a id="top"></a>
<h1 id="firstHeading" class="firstHeading">&#22522;&#20110;&#33539;&#22260;&#30340; for &#24490;&#29615; <span class="t-mark-rev t-since-cxx11">(C++11 &#36215;)</span></h1>
<div id="bodyContent">
<div id="contentSub"><span class="subpages">&lt; <a href="cpp.html">cpp</a>&lrm; | <a href="cpp-language.html">language</a></span></div>
<div id="mw-content-text" lang="zh" dir="ltr" class="mw-content-ltr" xml:lang="zh">
<p>&#22312;&#19968;&#20010;&#33539;&#22260;&#19978;&#25191;&#34892; <code>for</code> &#24490;&#29615;&#12290;</p>
<p>&#29992;&#20316;&#23545;&#33539;&#22260;&#20013;&#30340;&#21508;&#20010;&#20540;&#65288;&#22914;&#23481;&#22120;&#20013;&#30340;&#25152;&#26377;&#20803;&#32032;&#65289;&#36827;&#34892;&#25805;&#20316;&#30340;&#20256;&#32479; <a href="cpp-language-for.html">for &#24490;&#29615;</a>&#30340;&#26356;&#21152;&#21487;&#35835;&#30340;&#31561;&#20215;&#29256;&#26412;&#12290;</p>
<h3><span class="mw-headline" id=".E8.AF.AD.E6.B3.95">&#35821;&#27861;</span></h3>
<table class="t-sdsc-begin">
<tr>
<td colspan="10" class="t-sdsc-sep"></td>
</tr>
<tr class="t-sdsc">
<td class="t-sdsc-nopad"><span class="t-spar">&#23646;&#24615;</span><span class="t-mark">(&#21487;&#36873;)</span> <code><b>for (</b></code> <span class="t-spar">&#21021;&#22987;&#21270;&#35821;&#21477;</span><span class="t-mark">(&#21487;&#36873;)</span><span class="t-spar">&#33539;&#22260;&#21464;&#37327;&#22768;&#26126;</span> <code><b>:</b></code> <span class="t-spar">&#33539;&#22260;&#34920;&#36798;&#24335;</span> <code><b>)</b></code> <span class="t-spar">&#24490;&#29615;&#35821;&#21477;</span></td>
<td class="t-sdsc-nopad"></td>
<td class="t-sdsc-nopad"></td>
</tr>
<tr>
<td colspan="10" class="t-sdsc-sep"></td>
</tr>
</table>
<table class="t-par-begin">
<tr class="t-par">
<td><span class="t-spar">&#23646;&#24615;</span></td>
<td>-</td>
<td>&#20219;&#24847;&#25968;&#37327;&#30340;<a href="cpp-language-attributes.html">&#23646;&#24615;</a></td>
</tr>
<tr class="t-par">
<td><span class="t-spar">&#21021;&#22987;&#21270;&#35821;&#21477;</span></td>
<td>-</td>
<td><span class="t-mark-rev t-since-cxx20">(C++20 &#36215;)</span> &#20197;&#19979;&#20043;&#19968;&#65306;
<ul>
<li><a href="cpp-language-statements.html">&#34920;&#36798;&#24335;&#35821;&#21477;</a>&#65288;&#21487;&#20197;&#26159;<i>&#31354;&#35821;&#21477;</i>&ldquo;<code><b>;</b></code>&rdquo;&#65289;</li>
<li><a href="cpp-language-declarations.html">&#31616;&#21333;&#22768;&#26126;</a>&#65292;&#20856;&#22411;&#22320;&#20026;&#24102;&#21021;&#22987;&#21270;&#22120;&#30340;&#21464;&#37327;&#22768;&#26126;&#65292;&#20294;&#23427;&#21487;&#20197;&#22768;&#26126;&#20219;&#24847;&#22810;&#20010;&#21464;&#37327;&#65292;&#25110;&#32773;&#26159;<a href="cpp-language-structured_binding.html">&#32467;&#26500;&#21270;&#32465;&#23450;&#22768;&#26126;</a></li>
</ul>
<table class="t-rev-begin">
<tr class="t-rev t-since-cxx23">
<td>
<ul>
<li><a href="cpp-language-type_alias.html">&#21035;&#21517;&#22768;&#26126;</a></li>
</ul>
</td>
<td><span class="t-mark-rev t-since-cxx23">(C++23 &#36215;)</span></td>
</tr>
</table>
<dl>
<dd>&#27880;&#24847;&#65292;&#25152;&#26377; <span class="t-spar">&#21021;&#22987;&#21270;&#35821;&#21477;</span> &#24517;&#28982;&#20197;&#20998;&#21495; <code><b>;</b></code> &#32467;&#23614;&#65292;&#22240;&#27492;&#23427;&#32463;&#24120;&#34987;&#38750;&#27491;&#24335;&#22320;&#25551;&#36848;&#20026;&#21518;&#38543;&#20998;&#21495;&#30340;&#34920;&#36798;&#24335;&#25110;&#22768;&#26126;&#12290;</dd>
</dl>
</td>
</tr>
<tr class="t-par">
<td><span class="t-spar">&#33539;&#22260;&#21464;&#37327;&#22768;&#26126;</span></td>
<td>-</td>
<td>&#19968;&#20010;&#20855;&#21517;&#21464;&#37327;&#30340;<a href="cpp-language-declarations.html">&#22768;&#26126;</a>&#65292;&#23427;&#30340;&#31867;&#22411;&#26159;&#30001; <span class="t-spar">&#33539;&#22260;&#34920;&#36798;&#24335;</span> &#25152;&#34920;&#31034;&#30340;&#24207;&#21015;&#30340;&#20803;&#32032;&#30340;&#31867;&#22411;&#65292;&#25110;&#35813;&#31867;&#22411;&#30340;&#24341;&#29992;&#12290;&#36890;&#24120;&#29992; <a href="cpp-language-auto.html">auto &#35828;&#26126;&#31526;</a>&#36827;&#34892;&#33258;&#21160;&#31867;&#22411;&#25512;&#23548;&#12290;</td>
</tr>
<tr class="t-par">
<td><span class="t-spar">&#33539;&#22260;&#34920;&#36798;&#24335;</span></td>
<td>-</td>
<td>&#21487;&#20197;&#34920;&#31034;&#19968;&#20010;&#21512;&#36866;&#30340;&#24207;&#21015;&#65288;&#25968;&#32452;&#65292;&#25110;&#23450;&#20041;&#20102; <code>begin</code> &#21644; <code>end</code> &#25104;&#21592;&#20989;&#25968;&#25110;&#33258;&#30001;&#20989;&#25968;&#30340;&#23545;&#35937;&#65292;&#35265;&#19979;&#25991;&#65289;&#30340;&#20219;&#24847;<a href="cpp-language-expressions.html">&#34920;&#36798;&#24335;</a>&#65292;&#25110;&#19968;&#20010;<a href="cpp-language-list_initialization.html">&#33457;&#25324;&#21495;&#21021;&#22987;&#21270;&#22120;&#21015;&#34920;</a>&#12290;</td>
</tr>
<tr class="t-par">
<td><span class="t-spar">&#24490;&#29615;&#35821;&#21477;</span></td>
<td>-</td>
<td>&#20219;&#24847;<a href="cpp-language-statements.html">&#35821;&#21477;</a>&#65292;&#36890;&#24120;&#26159;&#19968;&#26465;&#22797;&#21512;&#35821;&#21477;&#65292;&#23427;&#26159;&#24490;&#29615;&#20307;</td>
</tr>
</table>
<table class="t-rev-begin">
<tr class="t-rev t-since-cxx17">
<td>
<p><span class="t-spar">&#33539;&#22260;&#21464;&#37327;&#22768;&#26126;</span> &#21487;&#20197;&#26159;<a href="cpp-language-structured_binding.html">&#32467;&#26500;&#21270;&#32465;&#23450;&#22768;&#26126;</a>&#65306;</p>
<div dir="ltr" class="mw-geshi" style="text-align: left;">
<div class="cpp source-cpp">
<pre class="de1"><span class="kw1">for</span> <span class="br0">(</span><span class="kw4">auto</span><span class="sy3">&amp;&amp;</span> <span class="br0">[</span>first,second<span class="br0">]</span> <span class="sy4">:</span> mymap<span class="br0">)</span> <span class="br0">{</span>
<span class="co1">// &#20351;&#29992; first &#21644; second</span>
<span class="br0">}</span></pre></div>
</div>
</td>
<td><span class="t-mark-rev t-since-cxx17">(C++17 &#36215;)</span></td>
</tr>
</table>
<h3><span class="mw-headline" id=".E8.A7.A3.E9.87.8A">&#35299;&#37322;</span></h3>
<p>&#19978;&#36848;&#35821;&#27861;&#20135;&#29983;&#30340;&#20195;&#30721;&#31561;&#20215;&#20110;&#19979;&#21015;&#20195;&#30721;&#65288;<b><code>__range</code></b>&#12289;<b><code>__begin</code></b> &#21644; <b><code>__end</code></b> &#20165;&#29992;&#20110;&#38416;&#37322;&#65289;&#65306;</p>
<table class="t-rev-begin">
<tr class="t-rev t-until-cxx17">
<td>
<p><code><b>{</b></code><br /></p>
<dl>
<dd><code><b>auto &amp;&amp; __range =</b></code> <span class="t-spar">&#33539;&#22260;&#34920;&#36798;&#24335;</span> <code><b>;</b></code><br /></dd>
<dd><code><b>for (auto __begin =</b></code> <i>&#39318;&#34920;&#36798;&#24335;</i><code><b>,</b></code> <code><b>__end =</b></code> <i>&#23614;&#34920;&#36798;&#24335;</i> <code><b>; __begin&nbsp;!= __end; ++__begin) {</b></code><br />
<dl>
<dd><span class="t-spar">&#33539;&#22260;&#21464;&#37327;&#22768;&#26126;</span> <code><b>= *__begin;</b></code><br /></dd>
<dd><span class="t-spar">&#24490;&#29615;&#35821;&#21477;</span><br /></dd>
</dl>
</dd>
<dd><code><b>}</b></code><br /></dd>
</dl>
<p><code><b>}</b></code><br /></p>
</td>
<td><span class="t-mark-rev t-until-cxx17">(C++17 &#21069;)</span></td>
</tr>
<tr class="t-rev t-since-cxx17 t-until-cxx20">
<td>
<p><code><b>{</b></code><br /></p>
<dl>
<dd><code><b>auto &amp;&amp; __range =</b></code> <span class="t-spar">&#33539;&#22260;&#34920;&#36798;&#24335;</span> <code><b>;</b></code><br /></dd>
<dd><code><b>auto __begin =</b></code> <i>&#39318;&#34920;&#36798;&#24335;</i> <code><b>;</b></code><br /></dd>
<dd><code><b>auto __end =</b></code> <i>&#23614;&#34920;&#36798;&#24335;</i> <code><b>;</b></code><br /></dd>
<dd><code><b>for (&nbsp;; __begin&nbsp;!= __end; ++__begin) {</b></code><br />
<dl>
<dd><span class="t-spar">&#33539;&#22260;&#21464;&#37327;&#22768;&#26126;</span> <code><b>= *__begin;</b></code><br /></dd>
<dd><span class="t-spar">&#24490;&#29615;&#35821;&#21477;</span><br /></dd>
</dl>
</dd>
<dd><code><b>}</b></code><br /></dd>
</dl>
<p><code><b>}</b></code><br /></p>
</td>
<td><span class="t-mark-rev t-since-cxx17">(C++17 &#36215;)</span><br />
<span class="t-mark-rev t-until-cxx20">(C++20 &#21069;)</span></td>
</tr>
<tr class="t-rev t-since-cxx20">
<td>
<p><code><b>{</b></code><br /></p>
<dl>
<dd><span class="t-spar">&#21021;&#22987;&#21270;&#35821;&#21477;</span><br /></dd>
<dd><code><b>auto &amp;&amp; __range =</b></code> <span class="t-spar">&#33539;&#22260;&#34920;&#36798;&#24335;</span> <code><b>;</b></code><br /></dd>
<dd><code><b>auto __begin =</b></code> <i>&#39318;&#34920;&#36798;&#24335;</i> <code><b>;</b></code><br /></dd>
<dd><code><b>auto __end =</b></code> <i>&#23614;&#34920;&#36798;&#24335;</i> <code><b>;</b></code><br /></dd>
<dd><code><b>for (&nbsp;; __begin&nbsp;!= __end; ++__begin) {</b></code><br />
<dl>
<dd><span class="t-spar">&#33539;&#22260;&#21464;&#37327;&#22768;&#26126;</span> <code><b>= *__begin;</b></code><br /></dd>
<dd><span class="t-spar">&#24490;&#29615;&#35821;&#21477;</span><br /></dd>
</dl>
</dd>
<dd><code><b>}</b></code><br /></dd>
</dl>
<p><code><b>}</b></code><br /></p>
</td>
<td><span class="t-mark-rev t-since-cxx20">(C++20 &#36215;)</span></td>
</tr>
</table>
<p>&#35201;&#36845;&#20195;&#30340;&#24207;&#21015;&#25110;&#33539;&#22260;&#36890;&#36807;&#23545; <span class="t-spar">&#33539;&#22260;&#34920;&#36798;&#24335;</span> &#27714;&#20540;&#20197;&#30830;&#23450;&#12290;&#20381;&#27425;&#23545;&#24207;&#21015;&#30340;&#27599;&#20010;&#20803;&#32032;&#36827;&#34892;&#35299;&#24341;&#29992;&#65292;&#24182;&#36171;&#20540;&#32473;&#20855;&#26377; <span class="t-spar">&#33539;&#22260;&#21464;&#37327;&#22768;&#26126;</span> &#20013;&#25152;&#32473;&#23450;&#30340;&#31867;&#22411;&#21644;&#21517;&#23383;&#30340;&#21464;&#37327;&#12290;</p>
<p><i><code>&#39318;&#34920;&#36798;&#24335;</code></i> &#21644; <i><code>&#23614;&#34920;&#36798;&#24335;</code></i> &#23450;&#20041;&#22914;&#19979;&#65306;</p>
<ul>
<li>&#22914;&#26524; <span class="t-spar">&#33539;&#22260;&#34920;&#36798;&#24335;</span> &#26159;&#25968;&#32452;&#31867;&#22411;&#30340;&#34920;&#36798;&#24335;&#65292;&#37027;&#20040; <i><code>&#39318;&#34920;&#36798;&#24335;</code></i> &#26159; <span class="t-c"><span class="mw-geshi cpp source-cpp">__range</span></span> &#32780; <i><code>&#23614;&#34920;&#36798;&#24335;</code></i> &#26159; <span class="t-c"><span class="mw-geshi cpp source-cpp"><span class="br0">(</span>__range <span class="sy2">+</span> __bound<span class="br0">)</span></span></span>&#65292;&#20854;&#20013; <code>__bound</code> &#26159;&#25968;&#32452;&#30340;&#20803;&#32032;&#25968;&#30446;&#65288;&#22914;&#26524;&#25968;&#32452;&#22823;&#23567;&#26410;&#30693;&#25110;&#25317;&#26377;&#19981;&#23436;&#25972;&#31867;&#22411;&#65292;&#37027;&#20040;&#31243;&#24207;&#38750;&#33391;&#26500;&#65289;</li>
<li>&#22914;&#26524; <span class="t-spar">&#33539;&#22260;&#34920;&#36798;&#24335;</span> &#26159;&#21516;&#26102;&#25317;&#26377;&#21517;&#20026; <span class="t-c"><span class="mw-geshi cpp source-cpp">begin</span></span> &#20197;&#21450;&#21517;&#20026; <span class="t-c"><span class="mw-geshi cpp source-cpp">end</span></span> &#30340;&#25104;&#21592;&#30340;&#31867;&#31867;&#22411; <code>C</code> &#30340;&#34920;&#36798;&#24335;&#65288;&#19981;&#31649;&#36825;&#20123;&#25104;&#21592;&#30340;&#31867;&#22411;&#25110;&#21487;&#35265;&#24615;&#65289;&#65292;&#37027;&#20040; <i><code>&#39318;&#34920;&#36798;&#24335;</code></i> &#26159; <span class="t-c"><span class="mw-geshi cpp source-cpp">__range.<span class="me1">begin</span><span class="br0">(</span><span class="br0">)</span></span></span> &#32780; <i><code>&#23614;&#34920;&#36798;&#24335;</code></i> &#26159; <span class="t-c"><span class="mw-geshi cpp source-cpp">__range.<span class="me1">end</span><span class="br0">(</span><span class="br0">)</span></span></span>&#65307;</li>
<li>&#21542;&#21017;&#65292;<i><code>&#39318;&#34920;&#36798;&#24335;</code></i> &#26159; <span class="t-c"><span class="mw-geshi cpp source-cpp">begin<span class="br0">(</span>__range<span class="br0">)</span></span></span> &#32780; <i><code>&#23614;&#34920;&#36798;&#24335;</code></i> &#26159; <span class="t-c"><span class="mw-geshi cpp source-cpp">end<span class="br0">(</span>__range<span class="br0">)</span></span></span>&#65292;&#36890;&#36807;<a href="cpp-language-adl.html">&#23454;&#21442;&#20381;&#36182;&#26597;&#25214;</a>&#36827;&#34892;&#26597;&#25214;&#65288;&#19981;&#36827;&#34892;&#38750;&#23454;&#21442;&#20381;&#36182;&#26597;&#25214;&#65289;&#12290;</li>
</ul>
<p>&#27491;&#22914;&#20256;&#32479;&#24490;&#29615;&#19968;&#26679;&#65292;<a href="cpp-language-break.html">break &#35821;&#21477;</a>&#21487;&#29992;&#20110;&#25552;&#26089;&#36864;&#20986;&#24490;&#29615;&#65292;&#19988; <a href="cpp-language-continue.html">continue &#35821;&#21477;</a>&#33021;&#29992;&#20110;&#20197;&#19979;&#20010;&#20803;&#32032;&#37325;&#26032;&#24320;&#22987;&#24490;&#29615;&#12290;</p>
<h3><span class="mw-headline" id=".E4.B8.B4.E6.97.B6.E8.8C.83.E5.9B.B4.E8.A1.A8.E8.BE.BE.E5.BC.8F">&#20020;&#26102;&#33539;&#22260;&#34920;&#36798;&#24335;</span></h3>
<p>&#22914;&#26524; <span class="t-spar">&#33539;&#22260;&#34920;&#36798;&#24335;</span> &#36820;&#22238;&#20020;&#26102;&#37327;&#65292;&#37027;&#20040;&#23427;&#30340;&#29983;&#23384;&#26399;&#24310;&#32493;&#21040;&#24490;&#29615;&#32467;&#23614;&#65292;&#22914;&#32465;&#23450;&#21040;&#36716;&#21457;&#24341;&#29992; <b><code>__range</code></b> &#25152;&#31034;&#65292;&#20294;&#35201;&#27880;&#24847; <span class="t-spar">&#33539;&#22260;&#34920;&#36798;&#24335;</span> &#20013;&#20219;&#20309;&#20020;&#26102;&#37327;&#29983;&#23384;&#26399;&#37117;<i>&#19981;</i>&#20250;&#24310;&#38271;&#12290;</p>
<div dir="ltr" class="mw-geshi" style="text-align: left;">
<div class="cpp source-cpp">
<pre class="de1"><span class="kw1">for</span> <span class="br0">(</span><span class="kw4">auto</span><span class="sy3">&amp;</span> x <span class="sy4">:</span> foo<span class="br0">(</span><span class="br0">)</span>.<span class="me1">items</span><span class="br0">(</span><span class="br0">)</span><span class="br0">)</span> <span class="br0">{</span> <span class="coMULTI">/* .. */</span> <span class="br0">}</span> <span class="co1">// &#22914;&#26524; foo() &#36820;&#22238;&#21491;&#20540;&#21017;&#20026;&#26410;&#23450;&#20041;&#34892;&#20026;</span></pre></div>
</div>
<table class="t-rev-begin">
<tr class="t-rev t-since-cxx20">
<td>
<p>&#27492;&#38382;&#39064;&#21487;&#29992; <span class="t-spar">&#21021;&#22987;&#21270;&#35821;&#21477;</span> &#21464;&#36890;&#35299;&#20915;&#65306;</p>
<div dir="ltr" class="mw-geshi" style="text-align: left;">
<div class="cpp source-cpp">
<pre class="de1"><span class="kw1">for</span> <span class="br0">(</span>T thing <span class="sy1">=</span> foo<span class="br0">(</span><span class="br0">)</span><span class="sy4">;</span> <span class="kw4">auto</span><span class="sy3">&amp;</span> x <span class="sy4">:</span> thing.<span class="me1">items</span><span class="br0">(</span><span class="br0">)</span><span class="br0">)</span> <span class="br0">{</span> <span class="coMULTI">/* ... */</span> <span class="br0">}</span> <span class="co1">// OK</span></pre></div>
</div>
</td>
<td><span class="t-mark-rev t-since-cxx20">(C++20 &#36215;)</span></td>
</tr>
</table>
<h3><span class="mw-headline" id=".E6.B3.A8.E8.A7.A3">&#27880;&#35299;</span></h3>
<p>&#22914;&#26524;&#21021;&#22987;&#21270;&#22120;&#65288;<span class="t-spar">&#33539;&#22260;&#34920;&#36798;&#24335;</span>&#65289;&#26159;&#33457;&#25324;&#21495;&#21021;&#22987;&#21270;&#22120;&#21015;&#34920;&#65292;&#37027;&#20040; <code>__range</code> &#34987;&#25512;&#23548;&#20026; <span class="t-lc">std::initializer_list&lt;&gt;&amp;&amp;</span>&#12290;</p>
<p>&#22312;&#27867;&#22411;&#20195;&#30721;&#20013;&#65292;&#20351;&#29992;&#25512;&#23548;&#30340;&#36716;&#21457;&#24341;&#29992;&#65292;&#22914; <span class="t-c"><span class="mw-geshi cpp source-cpp"><span class="kw1">for</span> <span class="br0">(</span><span class="kw4">auto</span><span class="sy3">&amp;&amp;</span> var <span class="sy4">:</span> sequence<span class="br0">)</span></span></span>&#65292;&#26159;&#23433;&#20840;&#19988;&#21463;&#25512;&#33616;&#30340;&#20570;&#27861;&#12290;</p>
<p>&#22914;&#26524;&#33539;&#22260;&#31867;&#22411;&#25317;&#26377;&#21517;&#20026; <code>begin</code> &#30340;&#25104;&#21592;&#21644;&#21517;&#20026; <code>end</code> &#30340;&#25104;&#21592;&#65292;&#37027;&#20040;&#20351;&#29992;&#25104;&#21592;&#35299;&#37322;&#26041;&#26696;&#12290;&#20854;&#20013;&#26080;&#35270;&#25104;&#21592;&#26159;&#31867;&#22411;&#12289;&#25968;&#25454;&#25104;&#21592;&#12289;&#20989;&#25968;&#36824;&#26159;&#26522;&#20030;&#39033;&#21450;&#20854;&#21487;&#35775;&#38382;&#24615;&#12290;&#20174;&#32780;&#20687; <span class="t-c"><span class="mw-geshi cpp source-cpp"><span class="kw1">class</span> meow <span class="br0">{</span> <span class="kw2">enum</span> <span class="br0">{</span> begin <span class="sy1">=</span> <span class="nu0">1</span>, end <span class="sy1">=</span> <span class="nu0">2</span><span class="br0">}</span><span class="sy4">;</span> <span class="coMULTI">/* &#31867;&#30340;&#21097;&#20313;&#37096;&#20998; */</span> <span class="br0">}</span><span class="sy4">;</span></span></span> &#30340;&#31867;&#19981;&#33021;&#29992;&#20110;&#22522;&#20110;&#33539;&#22260;&#30340; for &#24490;&#29615;&#65292;&#21363;&#20351;&#26377;&#21629;&#21517;&#31354;&#38388;&#20316;&#29992;&#22495;&#30340; begin/end &#20989;&#25968;&#23384;&#22312;&#12290;</p>
<p>&#34429;&#28982;&#36890;&#24120;&#22312; <span class="t-spar">&#24490;&#29615;&#35821;&#21477;</span> &#20013;&#20351;&#29992;&#22768;&#26126;&#20110; <span class="t-spar">&#33539;&#22260;&#21464;&#37327;&#22768;&#26126;</span> &#30340;&#21464;&#37327;&#65292;&#20294;&#24182;&#19981;&#35201;&#27714;&#36825;&#20040;&#20570;&#12290;</p>
<table class="t-rev-begin">
<tr class="t-rev t-since-cxx17">
<td>
<p>&#20174; C++17 &#24320;&#22987;&#65292;<span class="t-spar">&#39318;&#34920;&#36798;&#24335;</span> &#21644; <span class="t-spar">&#23614;&#34920;&#36798;&#24335;</span> &#30340;&#31867;&#22411;&#19981;&#24517;&#30456;&#21516;&#65292;&#32780;&#19988;&#23454;&#38469;&#19978; <span class="t-spar">&#23614;&#34920;&#36798;&#24335;</span> &#30340;&#31867;&#22411;&#19981;&#24517;&#26159;&#36845;&#20195;&#22120;&#65306;&#23427;&#21482;&#38656;&#35201;&#33021;&#19982;&#19968;&#20010;&#36845;&#20195;&#22120;&#27604;&#36739;&#26159;&#21542;&#19981;&#31561;&#12290;&#36825;&#20801;&#35768;&#20197;&#19968;&#20010;&#35859;&#35789;&#65288;&#20363;&#22914;&ldquo;&#36845;&#20195;&#22120;&#25351;&#21521;&#31354;&#23383;&#31526;&rdquo;&#65289;&#23545;&#33539;&#22260;&#36827;&#34892;&#20998;&#30028;&#12290;</p>
</td>
<td><span class="t-mark-rev t-since-cxx17">(C++17 &#36215;)</span></td>
</tr>
</table>
<p>&#24403;&#22522;&#20110;&#33539;&#22260;&#30340; for &#24490;&#29615;&#34987;&#29992;&#20110;&#19968;&#20010;&#20855;&#26377;&#20889;&#26102;&#22797;&#21046;&#35821;&#20041;&#30340;&#65288;&#38750; const&#65289;&#23545;&#35937;&#26102;&#65292;&#23427;&#21487;&#33021;&#20250;&#36890;&#36807;&#65288;&#38544;&#24335;&#65289;&#35843;&#29992;&#38750; const &#30340; <code>begin()</code> &#25104;&#21592;&#20989;&#25968;&#35302;&#21457;&#28145;&#23618;&#22797;&#21046;&#12290;</p>
<table class="t-rev-begin">
<tr class="t-rev t-since-cxx17">
<td>
<p>&#22914;&#26524;&#24819;&#35201;&#36991;&#20813;&#36825;&#31181;&#34892;&#20026;&#65288;&#27604;&#22914;&#24490;&#29615;&#23454;&#38469;&#19978;&#19981;&#20250;&#20462;&#25913;&#36825;&#20010;&#23545;&#35937;&#65289;&#65292;&#21487;&#20197;&#20351;&#29992; <span class="t-lc"><a href="cpp-utility-as_const.html">std::as_const</a></span>&#65306;</p>
<div dir="ltr" class="mw-geshi" style="text-align: left;">
<div class="cpp source-cpp">
<pre class="de1"><span class="kw1">struct</span> cow_string <span class="br0">{</span> <span class="coMULTI">/* ... */</span> <span class="br0">}</span><span class="sy4">;</span> <span class="co1">// &#20889;&#26102;&#22797;&#21046;&#30340;&#23383;&#31526;&#20018;</span>
cow_string str <span class="sy1">=</span> <span class="coMULTI">/* ... */</span><span class="sy4">;</span>
<span class="co1">// for(auto x : str) { /* ... */ } // &#21487;&#33021;&#20250;&#23548;&#33268;&#28145;&#23618;&#22797;&#21046;</span>
<span class="kw1">for</span><span class="br0">(</span><span class="kw4">auto</span> x <span class="sy4">:</span> <a href="cpp-utility-as_const.html"><span class="kw1121">std::<span class="me2">as_const</span></span></a><span class="br0">(</span>str<span class="br0">)</span><span class="br0">)</span> <span class="br0">{</span> <span class="coMULTI">/* ... */</span> <span class="br0">}</span></pre></div>
</div>
</td>
<td><span class="t-mark-rev t-since-cxx17">(C++17 &#36215;)</span></td>
</tr>
</table>
<h3><span class="mw-headline" id=".E5.85.B3.E9.94.AE.E8.AF.8D">&#20851;&#38190;&#35789;</span></h3>
<p><a href="cpp-keyword-for.html"><tt>for</tt></a></p>
<h3><span class="mw-headline" id=".E7.A4.BA.E4.BE.8B">&#31034;&#20363;</span></h3>
<div class="t-example">
<div class="t-example-live-link"></div>
<div dir="ltr" class="mw-geshi" style="text-align: left;">
<div class="cpp source-cpp">
<pre class="de1"><span class="co2">#include &lt;iostream&gt;</span>
<span class="co2">#include &lt;vector&gt;</span>
<span class="kw4">int</span> main<span class="br0">(</span><span class="br0">)</span> <span class="br0">{</span>
<a href="cpp-container-vector.html"><span class="kw1269">std::<span class="me2">vector</span></span></a><span class="sy1">&lt;</span><span class="kw4">int</span><span class="sy1">&gt;</span> v <span class="sy1">=</span> <span class="br0">{</span><span class="nu0">0</span>, <span class="nu0">1</span>, <span class="nu0">2</span>, <span class="nu0">3</span>, <span class="nu0">4</span>, <span class="nu0">5</span><span class="br0">}</span><span class="sy4">;</span>
<span class="kw1">for</span> <span class="br0">(</span><span class="kw4">const</span> <span class="kw4">int</span><span class="sy3">&amp;</span> i <span class="sy4">:</span> v<span class="br0">)</span> <span class="co1">// &#20197; const &#24341;&#29992;&#35775;&#38382;</span>
<a href="cpp-io-cout.html"><span class="kw1758">std::<span class="me2">cout</span></span></a> <span class="sy1">&lt;&lt;</span> i <span class="sy1">&lt;&lt;</span> <span class="st0">&#39; &#39;</span><span class="sy4">;</span>
<a href="cpp-io-cout.html"><span class="kw1758">std::<span class="me2">cout</span></span></a> <span class="sy1">&lt;&lt;</span> <span class="st0">&#39;<span class="es1">\n</span>&#39;</span><span class="sy4">;</span>
<span class="kw1">for</span> <span class="br0">(</span><span class="kw4">auto</span> i <span class="sy4">:</span> v<span class="br0">)</span> <span class="co1">// &#20197;&#20540;&#35775;&#38382;&#65292;i &#30340;&#31867;&#22411;&#26159; int</span>
<a href="cpp-io-cout.html"><span class="kw1758">std::<span class="me2">cout</span></span></a> <span class="sy1">&lt;&lt;</span> i <span class="sy1">&lt;&lt;</span> <span class="st0">&#39; &#39;</span><span class="sy4">;</span>
<a href="cpp-io-cout.html"><span class="kw1758">std::<span class="me2">cout</span></span></a> <span class="sy1">&lt;&lt;</span> <span class="st0">&#39;<span class="es1">\n</span>&#39;</span><span class="sy4">;</span>
<span class="kw1">for</span> <span class="br0">(</span><span class="kw4">auto</span><span class="sy3">&amp;&amp;</span> i <span class="sy4">:</span> v<span class="br0">)</span> <span class="co1">// &#20197;&#36716;&#21457;&#24341;&#29992;&#35775;&#38382;&#65292;i &#30340;&#31867;&#22411;&#26159; int&amp;</span>
<a href="cpp-io-cout.html"><span class="kw1758">std::<span class="me2">cout</span></span></a> <span class="sy1">&lt;&lt;</span> i <span class="sy1">&lt;&lt;</span> <span class="st0">&#39; &#39;</span><span class="sy4">;</span>
<a href="cpp-io-cout.html"><span class="kw1758">std::<span class="me2">cout</span></span></a> <span class="sy1">&lt;&lt;</span> <span class="st0">&#39;<span class="es1">\n</span>&#39;</span><span class="sy4">;</span>
<span class="kw4">const</span> <span class="kw4">auto</span><span class="sy3">&amp;</span> cv <span class="sy1">=</span> v<span class="sy4">;</span>
<span class="kw1">for</span> <span class="br0">(</span><span class="kw4">auto</span><span class="sy3">&amp;&amp;</span> i <span class="sy4">:</span> cv<span class="br0">)</span> <span class="co1">// &#20197;&#36716;&#21457;&#24341;&#29992;&#35775;&#38382;&#65292;i &#30340;&#31867;&#22411;&#26159; const int&amp;</span>
<a href="cpp-io-cout.html"><span class="kw1758">std::<span class="me2">cout</span></span></a> <span class="sy1">&lt;&lt;</span> i <span class="sy1">&lt;&lt;</span> <span class="st0">&#39; &#39;</span><span class="sy4">;</span>
<a href="cpp-io-cout.html"><span class="kw1758">std::<span class="me2">cout</span></span></a> <span class="sy1">&lt;&lt;</span> <span class="st0">&#39;<span class="es1">\n</span>&#39;</span><span class="sy4">;</span>
<span class="kw1">for</span> <span class="br0">(</span><span class="kw4">int</span> n <span class="sy4">:</span> <span class="br0">{</span><span class="nu0">0</span>, <span class="nu0">1</span>, <span class="nu0">2</span>, <span class="nu0">3</span>, <span class="nu0">4</span>, <span class="nu0">5</span><span class="br0">}</span><span class="br0">)</span> <span class="co1">// &#21021;&#22987;&#21270;&#22120;&#21487;&#20197;&#26159;&#33457;&#25324;&#21495;&#21021;&#22987;&#21270;&#22120;&#21015;&#34920;</span>
<a href="cpp-io-cout.html"><span class="kw1758">std::<span class="me2">cout</span></span></a> <span class="sy1">&lt;&lt;</span> n <span class="sy1">&lt;&lt;</span> <span class="st0">&#39; &#39;</span><span class="sy4">;</span>
<a href="cpp-io-cout.html"><span class="kw1758">std::<span class="me2">cout</span></span></a> <span class="sy1">&lt;&lt;</span> <span class="st0">&#39;<span class="es1">\n</span>&#39;</span><span class="sy4">;</span>
<span class="kw4">int</span> a<span class="br0">[</span><span class="br0">]</span> <span class="sy1">=</span> <span class="br0">{</span><span class="nu0">0</span>, <span class="nu0">1</span>, <span class="nu0">2</span>, <span class="nu0">3</span>, <span class="nu0">4</span>, <span class="nu0">5</span><span class="br0">}</span><span class="sy4">;</span>
<span class="kw1">for</span> <span class="br0">(</span><span class="kw4">int</span> n <span class="sy4">:</span> a<span class="br0">)</span> <span class="co1">// &#21021;&#22987;&#21270;&#22120;&#21487;&#20197;&#26159;&#25968;&#32452;</span>
<a href="cpp-io-cout.html"><span class="kw1758">std::<span class="me2">cout</span></span></a> <span class="sy1">&lt;&lt;</span> n <span class="sy1">&lt;&lt;</span> <span class="st0">&#39; &#39;</span><span class="sy4">;</span>
<a href="cpp-io-cout.html"><span class="kw1758">std::<span class="me2">cout</span></span></a> <span class="sy1">&lt;&lt;</span> <span class="st0">&#39;<span class="es1">\n</span>&#39;</span><span class="sy4">;</span>
<span class="kw1">for</span> <span class="br0">(</span><span class="br0">[</span><span class="br0">[</span>maybe_unused<span class="br0">]</span><span class="br0">]</span> <span class="kw4">int</span> n <span class="sy4">:</span> a<span class="br0">)</span>
<a href="cpp-io-cout.html"><span class="kw1758">std::<span class="me2">cout</span></span></a> <span class="sy1">&lt;&lt;</span> <span class="nu0">1</span> <span class="sy1">&lt;&lt;</span> <span class="st0">&#39; &#39;</span><span class="sy4">;</span> <span class="co1">// &#19981;&#24517;&#20351;&#29992;&#24490;&#29615;&#21464;&#37327;</span>
<a href="cpp-io-cout.html"><span class="kw1758">std::<span class="me2">cout</span></span></a> <span class="sy1">&lt;&lt;</span> <span class="st0">&#39;<span class="es1">\n</span>&#39;</span><span class="sy4">;</span>
<span class="kw1">for</span> <span class="br0">(</span><span class="kw4">auto</span> n <span class="sy1">=</span> v.<span class="me1">size</span><span class="br0">(</span><span class="br0">)</span><span class="sy4">;</span> <span class="kw4">auto</span> i <span class="sy4">:</span> v<span class="br0">)</span> <span class="co1">// &#21021;&#22987;&#21270;&#35821;&#21477;&#65288;C++20&#65289;</span>
<a href="cpp-io-cout.html"><span class="kw1758">std::<span class="me2">cout</span></span></a> <span class="sy1">&lt;&lt;</span> <span class="sy2">--</span>n <span class="sy2">+</span> i <span class="sy1">&lt;&lt;</span> <span class="st0">&#39; &#39;</span><span class="sy4">;</span>
<a href="cpp-io-cout.html"><span class="kw1758">std::<span class="me2">cout</span></span></a> <span class="sy1">&lt;&lt;</span> <span class="st0">&#39;<span class="es1">\n</span>&#39;</span><span class="sy4">;</span>
<span class="kw1">for</span> <span class="br0">(</span><span class="kw1">typedef</span> decltype<span class="br0">(</span>v<span class="br0">)</span><span class="sy4">::</span><span class="me2">value_type</span> elem_t<span class="sy4">;</span> elem_t i <span class="sy4">:</span> v<span class="br0">)</span>
<span class="co1">// typedef &#22768;&#26126;&#20316;&#20026;&#21021;&#22987;&#21270;&#35821;&#21477;&#65288;C++20&#65289;</span>
<a href="cpp-io-cout.html"><span class="kw1758">std::<span class="me2">cout</span></span></a> <span class="sy1">&lt;&lt;</span> i <span class="sy1">&lt;&lt;</span> <span class="st0">&#39; &#39;</span><span class="sy4">;</span>
<a href="cpp-io-cout.html"><span class="kw1758">std::<span class="me2">cout</span></span></a> <span class="sy1">&lt;&lt;</span> <span class="st0">&#39;<span class="es1">\n</span>&#39;</span><span class="sy4">;</span>
<span class="kw1">for</span> <span class="br0">(</span><span class="kw1">using</span> elem_t <span class="sy1">=</span> decltype<span class="br0">(</span>v<span class="br0">)</span><span class="sy4">::</span><span class="me2">value_type</span><span class="sy4">;</span> elem_t i <span class="sy4">:</span> v<span class="br0">)</span>
<span class="co1">// &#21035;&#21517;&#22768;&#26126;&#20316;&#20026;&#21021;&#22987;&#21270;&#35821;&#21477;&#65292;&#21516;&#19978;&#65288;C++23&#65289;</span>
<a href="cpp-io-cout.html"><span class="kw1758">std::<span class="me2">cout</span></span></a> <span class="sy1">&lt;&lt;</span> i <span class="sy1">&lt;&lt;</span> <span class="st0">&#39; &#39;</span><span class="sy4">;</span>
<a href="cpp-io-cout.html"><span class="kw1758">std::<span class="me2">cout</span></span></a> <span class="sy1">&lt;&lt;</span> <span class="st0">&#39;<span class="es1">\n</span>&#39;</span><span class="sy4">;</span>
<span class="br0">}</span></pre></div>
</div>
<p>&#36755;&#20986;&#65306;</p>
<div dir="ltr" class="mw-geshi" style="text-align: left;">
<div class="text source-text">
<pre class="de1">0 1 2 3 4 5
0 1 2 3 4 5
0 1 2 3 4 5
0 1 2 3 4 5
0 1 2 3 4 5
0 1 2 3 4 5
1 1 1 1 1 1
5 5 5 5 5 5
0 1 2 3 4 5
0 1 2 3 4 5</pre></div>
</div>
</div>
<h3><span class="mw-headline" id=".E7.BC.BA.E9.99.B7.E6.8A.A5.E5.91.8A">&#32570;&#38519;&#25253;&#21578;</span></h3>
<p>&#19979;&#21015;&#26356;&#25913;&#34892;&#20026;&#30340;&#32570;&#38519;&#25253;&#21578;&#36861;&#28335;&#22320;&#24212;&#29992;&#20110;&#20197;&#21069;&#20986;&#29256;&#30340; C++ &#26631;&#20934;&#12290;</p>
<table class="dsctable" style="font-size:0.8em">
<tr>
<th>DR</th>
<th>&#24212;&#29992;&#20110;</th>
<th>&#20986;&#29256;&#26102;&#30340;&#34892;&#20026;</th>
<th>&#27491;&#30830;&#34892;&#20026;</th>
</tr>
<tr>
<td><a rel="nofollow" class="external text" href="https://wg21.link/P0962R1">P0962R1</a></td>
<td>C++11</td>
<td>&#21482;&#35201; begin &#21644; end &#20043;&#19968;&#23384;&#22312;&#23601;&#20351;&#29992;&#25104;&#21592;&#35299;&#37322;&#26041;&#26696;</td>
<td>&#21482;&#26377;&#22312;&#20004;&#32773;&#37117;&#23384;&#22312;&#26102;&#25165;&#20351;&#29992;</td>
</tr>
</table>
<h3><span class="mw-headline" id=".E5.8F.82.E9.98.85">&#21442;&#38405;</span></h3>
<table class="t-dsc-begin">
<tr class="t-dsc">
<td>
<div class="t-dsc-member-div">
<div><a href="cpp-algorithm-for_each.html"><span class="t-lines"><span>for_each</span></span></a></div>
</div>
</td>
<td>&#24212;&#29992;&#20989;&#25968;&#21040;&#33539;&#22260;&#20013;&#30340;&#20803;&#32032;<br />
<span class="t-mark">(&#20989;&#25968;&#27169;&#26495;)</span></td>
</tr>
</table>
</div>
<div class="visualClear"></div>
</div>
</div>
</div>
</body>
</html>