Skip to content

Commit 22bbbb9

Browse files
author
cpprefjp-autoupdate
committed
update automatically
1 parent d3dd8cd commit 22bbbb9

File tree

5 files changed

+1081
-946
lines changed

5 files changed

+1081
-946
lines changed

reference/algorithm/ranges_replace_copy.html

Lines changed: 101 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -68,7 +68,7 @@
6868

6969
</head>
7070
<body>
71-
<header data-kunai-mdinfo="{&#34;meta&#34;: {&#34;header&#34;: [&#34;algorithm&#34;], &#34;namespace&#34;: [&#34;std::ranges&#34;], &#34;id-type&#34;: [&#34;function template&#34;], &#34;cpp&#34;: [&#34;cpp20&#34;]}, &#34;sources&#34;: [{&#34;id&#34;: &#34;61b2c61dacd37e3835e019869ad45d5baa5dde55&#34;, &#34;source&#34;: &#34;#include &lt;algorithm&gt;\n#include &lt;iostream&gt;\n#include &lt;vector&gt;\n#include &lt;iterator&gt;\n\nint main() {\n std::vector&lt;int&gt; v = { 3,1,2,1,2 };\n\n // 1 \u306e\u8981\u7d20\u3092\u5168\u90e8 10 \u306b\u7f6e\u304d\u63db\u3048\u305f\u3082\u306e\u3092\u51fa\u529b\u3059\u308b\n std::ranges::replace_copy(v, std::ostream_iterator&lt;int&gt;(std::cout, \&#34;,\&#34;), 1, 10);\n}\n&#34;}], &#34;page_id&#34;: [&#34;reference&#34;, &#34;algorithm&#34;, &#34;ranges_replace_copy&#34;]}">
71+
<header data-kunai-mdinfo="{&#34;meta&#34;: {&#34;header&#34;: [&#34;algorithm&#34;], &#34;namespace&#34;: [&#34;std::ranges&#34;], &#34;id-type&#34;: [&#34;function template&#34;], &#34;cpp&#34;: [&#34;cpp20&#34;]}, &#34;sources&#34;: [{&#34;id&#34;: &#34;61b2c61dacd37e3835e019869ad45d5baa5dde55&#34;, &#34;source&#34;: &#34;#include &lt;algorithm&gt;\n#include &lt;iostream&gt;\n#include &lt;vector&gt;\n#include &lt;iterator&gt;\n\nint main() {\n std::vector&lt;int&gt; v = { 3,1,2,1,2 };\n\n // 1 \u306e\u8981\u7d20\u3092\u5168\u90e8 10 \u306b\u7f6e\u304d\u63db\u3048\u305f\u3082\u306e\u3092\u51fa\u529b\u3059\u308b\n std::ranges::replace_copy(v, std::ostream_iterator&lt;int&gt;(std::cout, \&#34;,\&#34;), 1, 10);\n}\n&#34;}, {&#34;id&#34;: &#34;9db375d8a39fb59b99dc4b7e35ba4dfcd12cfc85&#34;, &#34;source&#34;: &#34;#include &lt;algorithm&gt;\n#include &lt;iostream&gt;\n#include &lt;vector&gt;\n#include &lt;iterator&gt;\n\nstruct Point {\n int x;\n int y;\n\n bool operator==(const Point&amp; other) const = default;\n};\n\nstd::ostream&amp; operator&lt;&lt;(std::ostream&amp; os, const Point&amp; p) {\n return os &lt;&lt; p.x &lt;&lt; &#39;,&#39; &lt;&lt; p.y &lt;&lt; std::endl;\n}\n\nint main() {\n std::vector&lt;Point&gt; v = {\n {1, 2},\n {3, 4},\n {5, 6},\n {1, 2},\n };\n\n // \u5024\u304c{1, 2}\u306e\u8981\u7d20\u3092\u3059\u3079\u3066{9, 9}\u306b\u7f6e\u304d\u63db\u3048\u305f\u3082\u306e\u3092\u51fa\u529b\u3059\u308b\n std::ranges::replace_copy(\n v,\n std::ostream_iterator&lt;int&gt;(std::cout, \&#34;\\n\&#34;),\n {1, 2},\n {9, 9}\n );\n}\n&#34;}], &#34;page_id&#34;: [&#34;reference&#34;, &#34;algorithm&#34;, &#34;ranges_replace_copy&#34;]}">
7272
<nav class="navbar navbar-default" role="navigation">
7373
<div class="container-fluid">
7474
<div class="navbar-header">
@@ -188,8 +188,8 @@
188188

189189
<p class="text-right"><small>
190190
最終更新日時(UTC):
191-
<span itemprop="datePublished" content="2024-06-11T13:45:38">
192-
2024年06月11日 13時45分38秒
191+
<span itemprop="datePublished" content="2025-05-26T08:15:23">
192+
2025年05月26日 08時15分23秒
193193
</span>
194194
<br/>
195195
<span itemprop="author" itemscope itemtype="http://schema.org/Person">
@@ -233,6 +233,25 @@
233233
<span class="k">const</span> <span class="n">T1</span><span class="o">&amp;</span> <span class="n">old_value</span><span class="p">,</span>
234234
<span class="k">const</span> <span class="n">T2</span><span class="o">&amp;</span> <span class="n">new_value</span><span class="p">,</span>
235235
<span class="n">Proj</span> <span class="n">proj</span> <span class="o">=</span> <span class="p">{});</span> <span class="c1">// (1) C++20</span>
236+
<span class="k">template</span> <span class="o">&lt;</span><span class="n"><a href="../iterator/input_iterator.html">input_iterator</a></span> <span class="n">I</span><span class="p">,</span>
237+
<span class="n"><a href="../iterator/sentinel_for.html">sentinel_for</a></span><span class="o">&lt;</span><span class="n">I</span><span class="o">&gt;</span> <span class="n">S</span><span class="p">,</span>
238+
<span class="k">class</span> <span class="nc">O</span><span class="p">,</span>
239+
<span class="k">class</span> <span class="nc">Proj</span> <span class="o">=</span> <span class="n"><a href="../functional/identity.html">identity</a></span><span class="p">,</span>
240+
<span class="k">class</span> <span class="nc">T1</span> <span class="o">=</span> <span class="n"><a href="../iterator/projected_value_t.html">projected_value_t</a></span><span class="o">&lt;</span><span class="n">I</span><span class="p">,</span> <span class="n">Proj</span><span class="o">&gt;</span><span class="p">,</span>
241+
<span class="k">class</span> <span class="nc">T2</span> <span class="o">=</span> <span class="n"><a href="../iterator/iter_value_t.html">iter_value_t</a></span><span class="o">&lt;</span><span class="n">O</span><span class="o">&gt;&gt;</span>
242+
<span class="n">requires</span> <span class="n"><a href="../iterator/indirectly_copyable.html">indirectly_copyable</a></span><span class="o">&lt;</span><span class="n">I</span><span class="p">,</span> <span class="n">O</span><span class="o">&gt;</span> <span class="o">&amp;&amp;</span>
243+
<span class="n"><a href="../iterator/indirect_binary_predicate.html">indirect_binary_predicate</a></span><span class="o">&lt;</span>
244+
<span class="n"><a href="../functional/ranges_equal_to.html">ranges::equal_to</a></span><span class="p">,</span>
245+
<span class="n"><a href="../iterator/projected.html">projected</a></span><span class="o">&lt;</span><span class="n">I</span><span class="p">,</span> <span class="n">Proj</span><span class="o">&gt;</span><span class="p">,</span>
246+
<span class="k">const</span> <span class="n">T1</span><span class="o">*</span>
247+
<span class="o">&gt;</span>
248+
<span class="k">constexpr</span> <span class="n"><a href="ranges_in_out_result.html">replace_copy_result</a></span><span class="o">&lt;</span><span class="n">I</span><span class="p">,</span> <span class="n">O</span><span class="o">&gt;</span>
249+
<span class="n">replace_copy</span><span class="p">(</span><span class="n">I</span> <span class="n">first</span><span class="p">,</span>
250+
<span class="n">S</span> <span class="n">last</span><span class="p">,</span>
251+
<span class="n">O</span> <span class="n">result</span><span class="p">,</span>
252+
<span class="k">const</span> <span class="n">T1</span><span class="o">&amp;</span> <span class="n">old_value</span><span class="p">,</span>
253+
<span class="k">const</span> <span class="n">T2</span><span class="o">&amp;</span> <span class="n">new_value</span><span class="p">,</span>
254+
<span class="n">Proj</span> <span class="n">proj</span> <span class="o">=</span> <span class="p">{});</span> <span class="c1">// (1) C++26</span>
236255

237256
<span class="k">template</span> <span class="o">&lt;</span><span class="n"><a href="../ranges/input_range.html">input_range</a></span> <span class="n">R</span><span class="p">,</span>
238257
<span class="k">class</span> <span class="nc">T1</span><span class="p">,</span>
@@ -244,13 +263,32 @@
244263
<span class="n"><a href="../functional/ranges_equal_to.html">ranges::equal_to</a></span><span class="p">,</span>
245264
<span class="n"><a href="../iterator/projected.html">projected</a></span><span class="o">&lt;</span><span class="n"><a href="../ranges/iterator_t.html">iterator_t</a></span><span class="o">&lt;</span><span class="n">R</span><span class="o">&gt;</span><span class="p">,</span> <span class="n">Proj</span><span class="o">&gt;</span><span class="p">,</span>
246265
<span class="k">const</span> <span class="n">T1</span><span class="o">*</span>
247-
<span class="o">&gt;</span>
266+
<span class="o">&gt;</span> <span class="o">&amp;&amp;</span>
267+
<span class="n"><a href="../iterator/output_iterator.html">output_iterator</a></span><span class="o">&lt;</span><span class="n">O</span><span class="p">,</span> <span class="k">const</span> <span class="n">T2</span><span class="o">&amp;&gt;</span>
248268
<span class="k">constexpr</span> <span class="n"><a href="ranges_in_out_result.html">replace_copy_result</a></span><span class="o">&lt;</span><span class="n"><a href="../ranges/borrowed_iterator_t.html">borrowed_iterator_t</a></span><span class="o">&lt;</span><span class="n">R</span><span class="o">&gt;</span><span class="p">,</span> <span class="n">O</span><span class="o">&gt;</span>
249269
<span class="n">replace_copy</span><span class="p">(</span><span class="n">R</span><span class="o">&amp;&amp;</span> <span class="n">r</span><span class="p">,</span>
250270
<span class="n">O</span> <span class="n">result</span><span class="p">,</span>
251271
<span class="k">const</span> <span class="n">T1</span><span class="o">&amp;</span> <span class="n">old_value</span><span class="p">,</span>
252272
<span class="k">const</span> <span class="n">T2</span><span class="o">&amp;</span> <span class="n">new_value</span><span class="p">,</span>
253273
<span class="n">Proj</span> <span class="n">proj</span> <span class="o">=</span> <span class="p">{});</span> <span class="c1">// (2) C++20</span>
274+
<span class="k">template</span> <span class="o">&lt;</span><span class="n"><a href="../ranges/input_range.html">input_range</a></span> <span class="n">R</span><span class="p">,</span>
275+
<span class="k">class</span> <span class="nc">O</span><span class="p">,</span>
276+
<span class="k">class</span> <span class="nc">Proj</span> <span class="o">=</span> <span class="n"><a href="../functional/identity.html">identity</a></span><span class="p">,</span>
277+
<span class="k">class</span> <span class="nc">T1</span> <span class="o">=</span> <span class="n"><a href="../iterator/projected_value_t.html">projected_value_t</a></span><span class="o">&lt;</span><span class="n"><a href="../ranges/iterator_t.html">iterator_t</a></span><span class="o">&lt;</span><span class="n">R</span><span class="o">&gt;</span><span class="p">,</span> <span class="n">Proj</span><span class="o">&gt;</span><span class="p">,</span>
278+
<span class="k">class</span> <span class="nc">T2</span> <span class="o">=</span> <span class="n"><a href="../iterator/iter_value_t.html">iter_value_t</a></span><span class="o">&lt;</span><span class="n">O</span><span class="o">&gt;&gt;</span>
279+
<span class="n">requires</span> <span class="n"><a href="../iterator/indirectly_copyable.html">indirectly_copyable</a></span><span class="o">&lt;</span><span class="n"><a href="../ranges/iterator_t.html">iterator_t</a></span><span class="o">&lt;</span><span class="n">R</span><span class="o">&gt;</span><span class="p">,</span> <span class="n">O</span><span class="o">&gt;</span> <span class="o">&amp;&amp;</span>
280+
<span class="n"><a href="../iterator/indirect_binary_predicate.html">indirect_binary_predicate</a></span><span class="o">&lt;</span>
281+
<span class="n"><a href="../functional/ranges_equal_to.html">ranges::equal_to</a></span><span class="p">,</span>
282+
<span class="n"><a href="../iterator/projected.html">projected</a></span><span class="o">&lt;</span><span class="n"><a href="../ranges/iterator_t.html">iterator_t</a></span><span class="o">&lt;</span><span class="n">R</span><span class="o">&gt;</span><span class="p">,</span> <span class="n">Proj</span><span class="o">&gt;</span><span class="p">,</span>
283+
<span class="k">const</span> <span class="n">T1</span><span class="o">*</span>
284+
<span class="o">&gt;</span> <span class="o">&amp;&amp;</span>
285+
<span class="n"><a href="../iterator/output_iterator.html">output_iterator</a></span><span class="o">&lt;</span><span class="n">O</span><span class="p">,</span> <span class="k">const</span> <span class="n">T2</span><span class="o">&amp;&gt;</span>
286+
<span class="k">constexpr</span> <span class="n"><a href="ranges_in_out_result.html">replace_copy_result</a></span><span class="o">&lt;</span><span class="n"><a href="../ranges/borrowed_iterator_t.html">borrowed_iterator_t</a></span><span class="o">&lt;</span><span class="n">R</span><span class="o">&gt;</span><span class="p">,</span> <span class="n">O</span><span class="o">&gt;</span>
287+
<span class="n">replace_copy</span><span class="p">(</span><span class="n">R</span><span class="o">&amp;&amp;</span> <span class="n">r</span><span class="p">,</span>
288+
<span class="n">O</span> <span class="n">result</span><span class="p">,</span>
289+
<span class="k">const</span> <span class="n">T1</span><span class="o">&amp;</span> <span class="n">old_value</span><span class="p">,</span>
290+
<span class="k">const</span> <span class="n">T2</span><span class="o">&amp;</span> <span class="n">new_value</span><span class="p">,</span>
291+
<span class="n">Proj</span> <span class="n">proj</span> <span class="o">=</span> <span class="p">{});</span> <span class="c1">// (2) C++26</span>
254292
<span class="p">}</span>
255293
</code></pre></div>
256294
</p>
@@ -270,7 +308,20 @@ <h2><a class="cpprefjp-defined-word" data-desc="関数呼び出し式の評価
270308
<p><code>{ .in = last, .out = result + (last - first)</code></p>
271309
<h2><a class="cpprefjp-defined-word" data-desc="関数等の意味論を構成する要素の1つ。Complexity。関数が使うアルゴリズムの空間計算量・時間計算量">計算量</a></h2>
272310
<p>正確に <code>last - first</code> 回の比較を行う</p>
311+
<h2>備考</h2>
312+
<ul>
313+
<li>(1), (2) :<ul>
314+
<li>C++26 : 引数として波カッコ初期化<code>{}</code>を受け付ける
315+
<br />
316+
<div class="codehilite"><pre><span></span><code><span class="n"><a href="../vector/vector.html">std::vector</a></span><span class="o">&lt;</span><span class="n">T</span><span class="o">&gt;</span> <span class="n">v</span><span class="p">;</span>
317+
<span class="n">std</span><span class="o">::</span><span class="n">ranges</span><span class="o">::</span><span class="n">replace_copy</span><span class="p">(</span><span class="n">v</span><span class="p">,</span> <span class="n">result</span><span class="p">,</span> <span class="p">{</span><span class="n">a</span><span class="p">,</span> <span class="n">b</span><span class="p">},</span> <span class="p">{</span><span class="n">c</span><span class="p">,</span> <span class="n">d</span><span class="p">});</span>
318+
</code></pre></div>
319+
</li>
320+
</ul>
321+
</li>
322+
</ul>
273323
<h2></h2>
324+
<h3>基本的な使い方</h3>
274325
<p><div class="yata" id="61b2c61dacd37e3835e019869ad45d5baa5dde55"><div class="codehilite"><pre><span></span><code><span class="cp">#include</span> <span class="cpf"><a href="../algorithm.html">&lt;algorithm&gt;</a></span><span class="cp"></span>
275326
<span class="cp">#include</span> <span class="cpf"><a href="../iostream.html">&lt;iostream&gt;</a></span><span class="cp"></span>
276327
<span class="cp">#include</span> <span class="cpf"><a href="../vector.html">&lt;vector&gt;</a></span><span class="cp"></span>
@@ -284,9 +335,50 @@ <h2>例</h2>
284335
<span class="p">}</span>
285336
</code></pre></div>
286337
</div></p>
287-
<h3>出力</h3>
338+
<h4>出力</h4>
288339
<p><pre><code>3,10,2,10,2,
289340
</code></pre></p>
341+
<h3>波カッコ初期化を入力として使用する (C++26)</h3>
342+
<p><div class="yata" id="9db375d8a39fb59b99dc4b7e35ba4dfcd12cfc85"><div class="codehilite"><pre><span></span><code><span class="cp">#include</span> <span class="cpf"><a href="../algorithm.html">&lt;algorithm&gt;</a></span><span class="cp"></span>
343+
<span class="cp">#include</span> <span class="cpf"><a href="../iostream.html">&lt;iostream&gt;</a></span><span class="cp"></span>
344+
<span class="cp">#include</span> <span class="cpf"><a href="../vector.html">&lt;vector&gt;</a></span><span class="cp"></span>
345+
<span class="cp">#include</span> <span class="cpf"><a href="../iterator.html">&lt;iterator&gt;</a></span><span class="cp"></span>
346+
347+
<span class="k">struct</span> <span class="n">Point</span> <span class="p">{</span>
348+
<span class="kt">int</span> <span class="n">x</span><span class="p">;</span>
349+
<span class="kt">int</span> <span class="n">y</span><span class="p">;</span>
350+
351+
<span class="kt">bool</span> <span class="k">operator</span><span class="o">==</span><span class="p">(</span><span class="k">const</span> <span class="n">Point</span><span class="o">&amp;</span> <span class="n">other</span><span class="p">)</span> <span class="k">const</span> <span class="o">=</span> <span class="k">default</span><span class="p">;</span>
352+
<span class="p">};</span>
353+
354+
<span class="n">std</span><span class="o">::</span><span class="n">ostream</span><span class="o">&amp;</span> <span class="k">operator</span><span class="o">&lt;&lt;</span><span class="p">(</span><span class="n">std</span><span class="o">::</span><span class="n">ostream</span><span class="o">&amp;</span> <span class="n">os</span><span class="p">,</span> <span class="k">const</span> <span class="n">Point</span><span class="o">&amp;</span> <span class="n">p</span><span class="p">)</span> <span class="p">{</span>
355+
<span class="k">return</span> <span class="n">os</span> <span class="o">&lt;&lt;</span> <span class="n">p</span><span class="p">.</span><span class="n">x</span> <span class="o">&lt;&lt;</span> <span class="sc">','</span> <span class="o">&lt;&lt;</span> <span class="n">p</span><span class="p">.</span><span class="n">y</span> <span class="o">&lt;&lt;</span> <span class="n"><a href="../ostream/endl.html">std::endl</a></span><span class="p">;</span>
356+
<span class="p">}</span>
357+
358+
<span class="kt">int</span> <span class="n">main</span><span class="p">()</span> <span class="p">{</span>
359+
<span class="n"><a href="../vector/vector.html">std::vector</a></span><span class="o">&lt;</span><span class="n">Point</span><span class="o">&gt;</span> <span class="n">v</span> <span class="o">=</span> <span class="p">{</span>
360+
<span class="p">{</span><span class="mi">1</span><span class="p">,</span> <span class="mi">2</span><span class="p">},</span>
361+
<span class="p">{</span><span class="mi">3</span><span class="p">,</span> <span class="mi">4</span><span class="p">},</span>
362+
<span class="p">{</span><span class="mi">5</span><span class="p">,</span> <span class="mi">6</span><span class="p">},</span>
363+
<span class="p">{</span><span class="mi">1</span><span class="p">,</span> <span class="mi">2</span><span class="p">},</span>
364+
<span class="p">};</span>
365+
366+
<span class="c1">// 値が{1, 2}の要素をすべて{9, 9}に置き換えたものを出力する</span>
367+
<span class="n"><span style="color:#ff0000">std::ranges::replace_copy</span></span><span class="p">(</span>
368+
<span class="n">v</span><span class="p">,</span>
369+
<span class="n"><a href="../iterator/ostream_iterator.html">std::ostream_iterator</a></span><span class="o">&lt;</span><span class="kt">int</span><span class="o">&gt;</span><span class="p">(</span><span class="n"><a href="../iostream/cout.html">std::cout</a></span><span class="p">,</span> <span class="s">"</span><span class="se">\n</span><span class="s">"</span><span class="p">),</span>
370+
<span class="p">{</span><span class="mi">1</span><span class="p">,</span> <span class="mi">2</span><span class="p">},</span>
371+
<span class="p">{</span><span class="mi">9</span><span class="p">,</span> <span class="mi">9</span><span class="p">}</span>
372+
<span class="p">);</span>
373+
<span class="p">}</span>
374+
</code></pre></div>
375+
</div></p>
376+
<h4>出力</h4>
377+
<p><pre><code>9,9
378+
3,4
379+
5,6
380+
9,9
381+
</code></pre></p>
290382
<h2>バージョン</h2>
291383
<h3>言語</h3>
292384
<ul>
@@ -302,6 +394,10 @@ <h3>処理系</h3>
302394
<h2>参照</h2>
303395
<ul>
304396
<li><a href="https://timsong-cpp.github.io/cppwp/n4861/algorithms" target="_blank">N4861 25 Algorithms library</a></li>
397+
<li><a href="https://open-std.org/jtc1/sc22/wg21/docs/papers/2024/p2248r8.html" target="_blank">P2248R8 Enabling list-initialization for algorithms</a><ul>
398+
<li>C++26で波カッコ初期化 (リスト初期化) に対応した</li>
399+
</ul>
400+
</li>
305401
</ul></div>
306402

307403
</div>

0 commit comments

Comments
 (0)