Skip to content

Commit 9abd264

Browse files
author
cpprefjp-autoupdate
committed
update automatically
1 parent d0bf686 commit 9abd264

File tree

4 files changed

+438
-88
lines changed

4 files changed

+438
-88
lines changed

reference/algorithm/fill_n.html

Lines changed: 84 additions & 14 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&#34;], &#34;id-type&#34;: [&#34;function template&#34;]}, &#34;sources&#34;: [{&#34;id&#34;: &#34;e2ba54ab0902a2e49a07c42b1f58d5ec2cdbfe99&#34;, &#34;source&#34;: &#34;#include &lt;algorithm&gt;\n#include &lt;iostream&gt;\n#include &lt;iterator&gt;\n\nint main() {\n // 3 \u3092\u51fa\u529b\u3057\u307e\u304f\u308b\n std::fill_n(std::ostream_iterator&lt;int&gt;(std::cout, \&#34;,\&#34;), 10, 3);\n}\n&#34;}], &#34;page_id&#34;: [&#34;reference&#34;, &#34;algorithm&#34;, &#34;fill_n&#34;]}">
71+
<header data-kunai-mdinfo="{&#34;meta&#34;: {&#34;header&#34;: [&#34;algorithm&#34;], &#34;namespace&#34;: [&#34;std&#34;], &#34;id-type&#34;: [&#34;function template&#34;]}, &#34;sources&#34;: [{&#34;id&#34;: &#34;1ef64ff2d4164f29e28f0510f5c3586c73126841&#34;, &#34;source&#34;: &#34;#include &lt;algorithm&gt;\n#include &lt;iostream&gt;\n#include &lt;iterator&gt;\n\nint main() {\n // \u50243\u309210\u500b\u51fa\u529b\u3059\u308b\n std::fill_n(std::ostream_iterator&lt;int&gt;(std::cout, \&#34;,\&#34;), 10, 3);\n}\n&#34;}, {&#34;id&#34;: &#34;f338aabdb5f4ecfdecc593ef13c7abdfad8e362a&#34;, &#34;source&#34;: &#34;#include &lt;algorithm&gt;\n#include &lt;iostream&gt;\n#include &lt;vector&gt;\n\nstruct Point {\n int x;\n int y;\n\n bool operator==(const Point&amp; other) const = default;\n};\n\nint main() {\n std::vector&lt;Point&gt; v(5);\n\n // \u5148\u982d3\u500b\u306e\u8981\u7d20\u3092\u5024{1, 2}\u3067\u57cb\u3081\u308b\n std::fill_n(v.begin(), 3, {1, 2});\n\n for (const Point&amp; p : v) {\n std::cout &lt;&lt; p.x &lt;&lt; \&#34;,\&#34; &lt;&lt; p.y &lt;&lt; std::endl;\n }\n}\n&#34;}], &#34;page_id&#34;: [&#34;reference&#34;, &#34;algorithm&#34;, &#34;fill_n&#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-26T09:42:51">
192+
2025年05月26日 09時42分51秒
193193
</span>
194194
<br/>
195195
<span itemprop="author" itemscope itemtype="http://schema.org/Person">
@@ -214,37 +214,59 @@
214214

215215
<div class="identifier-type">function template</div><div class="header">&lt;algorithm&gt;</div><h1 itemprop="name"><span class="namespace" title="namespace std">std::</span><span class="token">fill_n</span></h1>
216216
<div itemprop="articleBody"><p><div class="codehilite"><pre><span></span><code><span class="k">namespace</span> <span class="n">std</span> <span class="p">{</span>
217-
<span class="k">template</span> <span class="o">&lt;</span><span class="k">class</span> <span class="nc">OutputIterator</span><span class="p">,</span> <span class="k">class</span> <span class="nc">Size</span><span class="p">,</span> <span class="k">class</span> <span class="nc">T</span><span class="o">&gt;</span>
217+
<span class="k">template</span> <span class="o">&lt;</span><span class="k">class</span> <span class="nc">OutputIterator</span><span class="p">,</span>
218+
<span class="k">class</span> <span class="nc">Size</span><span class="p">,</span>
219+
<span class="k">class</span> <span class="nc">T</span><span class="o">&gt;</span>
218220
<span class="kt">void</span>
219221
<span class="n">fill_n</span><span class="p">(</span><span class="n">OutputIterator</span> <span class="n">first</span><span class="p">,</span>
220222
<span class="n">Size</span> <span class="n">n</span><span class="p">,</span>
221223
<span class="k">const</span> <span class="n">T</span><span class="o">&amp;</span> <span class="n">value</span><span class="p">);</span> <span class="c1">// (1) C++03</span>
222-
223-
<span class="k">template</span> <span class="o">&lt;</span><span class="k">class</span> <span class="nc">OutputIterator</span><span class="p">,</span> <span class="k">class</span> <span class="nc">Size</span><span class="p">,</span> <span class="k">class</span> <span class="nc">T</span><span class="o">&gt;</span>
224+
<span class="k">template</span> <span class="o">&lt;</span><span class="k">class</span> <span class="nc">OutputIterator</span><span class="p">,</span>
225+
<span class="k">class</span> <span class="nc">Size</span><span class="p">,</span>
226+
<span class="k">class</span> <span class="nc">T</span><span class="o">&gt;</span>
224227
<span class="n">OutputIterator</span>
225228
<span class="n">fill_n</span><span class="p">(</span><span class="n">OutputIterator</span> <span class="n">first</span><span class="p">,</span>
226229
<span class="n">Size</span> <span class="n">n</span><span class="p">,</span>
227230
<span class="k">const</span> <span class="n">T</span><span class="o">&amp;</span> <span class="n">value</span><span class="p">);</span> <span class="c1">// (1) C++11</span>
228-
229-
<span class="k">template</span> <span class="o">&lt;</span><span class="k">class</span> <span class="nc">OutputIterator</span><span class="p">,</span> <span class="k">class</span> <span class="nc">Size</span><span class="p">,</span> <span class="k">class</span> <span class="nc">T</span><span class="o">&gt;</span>
231+
<span class="k">template</span> <span class="o">&lt;</span><span class="k">class</span> <span class="nc">OutputIterator</span><span class="p">,</span>
232+
<span class="k">class</span> <span class="nc">Size</span><span class="p">,</span>
233+
<span class="k">class</span> <span class="nc">T</span><span class="o">&gt;</span>
230234
<span class="k">constexpr</span> <span class="n">OutputIterator</span>
231235
<span class="n">fill_n</span><span class="p">(</span><span class="n">OutputIterator</span> <span class="n">first</span><span class="p">,</span>
232236
<span class="n">Size</span> <span class="n">n</span><span class="p">,</span>
233237
<span class="k">const</span> <span class="n">T</span><span class="o">&amp;</span> <span class="n">value</span><span class="p">);</span> <span class="c1">// (1) C++20</span>
238+
<span class="k">template</span> <span class="o">&lt;</span><span class="k">class</span> <span class="nc">OutputIterator</span><span class="p">,</span>
239+
<span class="k">class</span> <span class="nc">Size</span><span class="p">,</span>
240+
<span class="k">class</span> <span class="nc">T</span> <span class="o">=</span> <span class="k">typename</span> <span class="n"><a href="../iterator/iterator_traits.html">iterator_traits</a></span><span class="o">&lt;</span><span class="n">OutputIterator</span><span class="o">&gt;::</span><span class="n">value_type</span><span class="o">&gt;</span>
241+
<span class="k">constexpr</span> <span class="n">OutputIterator</span>
242+
<span class="n">fill_n</span><span class="p">(</span><span class="n">OutputIterator</span> <span class="n">first</span><span class="p">,</span>
243+
<span class="n">Size</span> <span class="n">n</span><span class="p">,</span>
244+
<span class="k">const</span> <span class="n">T</span><span class="o">&amp;</span> <span class="n">value</span><span class="p">);</span> <span class="c1">// (1) C++26</span>
234245

235-
<span class="k">template</span> <span class="o">&lt;</span><span class="k">class</span> <span class="nc"><a href="../execution/execution/execution_policy.html">ExecutionPolicy</a></span><span class="p">,</span> <span class="k">class</span> <span class="nc">ForwardIterator</span><span class="p">,</span>
236-
<span class="k">class</span> <span class="nc">Size</span><span class="p">,</span> <span class="k">class</span> <span class="nc">T</span><span class="o">&gt;</span>
246+
<span class="k">template</span> <span class="o">&lt;</span><span class="k">class</span> <span class="nc"><a href="../execution/execution/execution_policy.html">ExecutionPolicy</a></span><span class="p">,</span>
247+
<span class="k">class</span> <span class="nc">ForwardIterator</span><span class="p">,</span>
248+
<span class="k">class</span> <span class="nc">Size</span><span class="p">,</span>
249+
<span class="k">class</span> <span class="nc">T</span><span class="o">&gt;</span>
237250
<span class="n">ForwardIterator</span>
238251
<span class="n">fill_n</span><span class="p">(</span><span class="n"><a href="../execution/execution/execution_policy.html">ExecutionPolicy</a></span><span class="o">&amp;&amp;</span> <span class="n">exec</span><span class="p">,</span>
239252
<span class="n">ForwardIterator</span> <span class="n">first</span><span class="p">,</span>
240253
<span class="n">Size</span> <span class="n">n</span><span class="p">,</span>
241254
<span class="k">const</span> <span class="n">T</span><span class="o">&amp;</span> <span class="n">value</span><span class="p">);</span> <span class="c1">// (2) C++17</span>
255+
<span class="k">template</span> <span class="o">&lt;</span><span class="k">class</span> <span class="nc"><a href="../execution/execution/execution_policy.html">ExecutionPolicy</a></span><span class="p">,</span>
256+
<span class="k">class</span> <span class="nc">ForwardIterator</span><span class="p">,</span>
257+
<span class="k">class</span> <span class="nc">Size</span><span class="p">,</span>
258+
<span class="k">class</span> <span class="nc">T</span> <span class="o">=</span> <span class="k">typename</span> <span class="n"><a href="../iterator/iterator_traits.html">iterator_traits</a></span><span class="o">&lt;</span><span class="n">ForwardIterator</span><span class="o">&gt;::</span><span class="n">value_type</span><span class="o">&gt;</span>
259+
<span class="n">ForwardIterator</span>
260+
<span class="n">fill_n</span><span class="p">(</span><span class="n"><a href="../execution/execution/execution_policy.html">ExecutionPolicy</a></span><span class="o">&amp;&amp;</span> <span class="n">exec</span><span class="p">,</span>
261+
<span class="n">ForwardIterator</span> <span class="n">first</span><span class="p">,</span>
262+
<span class="n">Size</span> <span class="n">n</span><span class="p">,</span>
263+
<span class="k">const</span> <span class="n">T</span><span class="o">&amp;</span> <span class="n">value</span><span class="p">);</span> <span class="c1">// (2) C++26</span>
242264
<span class="p">}</span>
243265
</code></pre></div>
244266
</p>
245267
<h2>概要</h2>
246268
<p><a class="cpprefjp-defined-word" data-desc="2つのイテレータで表現される半開区間を表す。C++20からイテレータと番兵で異なる型であっても指定可能になる">イテレータ範囲</a><code>[first, first + n)</code>のすべての要素に指定された値を書き込む。</p>
247-
<h2>要件</h2>
269+
<h2><a class="cpprefjp-defined-word" data-desc="関数等の意味論を構成する要素の1つ。Mandates。満たさなければプログラムが不適格となる要件。この要件は、オーバーロード解決によって選択された関数内での`static_assert`の定数条件式や、関数に対するdelete宣言などで表現できる">適格要件</a></h2>
248270
<ul>
249271
<li><code>value</code><code>output iterator</code> へ書き込み可能でなければならない。</li>
250272
<li><code>Size</code><code>integral type</code> に変換可能でなければならない。</li>
@@ -260,20 +282,64 @@ <h2><a class="cpprefjp-defined-word" data-desc="関数呼び出し式の評価
260282
</ul>
261283
<h2><a class="cpprefjp-defined-word" data-desc="関数等の意味論を構成する要素の1つ。Complexity。関数が使うアルゴリズムの空間計算量・時間計算量">計算量</a></h2>
262284
<p><code>n</code> が 1 以上の場合は <code>n</code> 回、そうでない場合は 0 回の代入を行う。</p>
285+
<h2>備考</h2>
286+
<ul>
287+
<li>(1), (2) :<ul>
288+
<li>C++26 : <code>value</code>パラメータとして波カッコ初期化<code>{}</code>を受け付ける
289+
<br />
290+
<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>
291+
<span class="n">std</span><span class="o">::</span><span class="n">fill_n</span><span class="p">(</span><span class="n"><a href="../vector/vector/begin.html">v.begin()</a></span><span class="p">,</span> <span class="n">n</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>
292+
</code></pre></div>
293+
</li>
294+
</ul>
295+
</li>
296+
</ul>
263297
<h2></h2>
264-
<p><div class="yata" id="e2ba54ab0902a2e49a07c42b1f58d5ec2cdbfe99"><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>
298+
<h3>基本的な使い方</h3>
299+
<p><div class="yata" id="1ef64ff2d4164f29e28f0510f5c3586c73126841"><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>
265300
<span class="cp">#include</span> <span class="cpf"><a href="../iostream.html">&lt;iostream&gt;</a></span><span class="cp"></span>
266301
<span class="cp">#include</span> <span class="cpf"><a href="../iterator.html">&lt;iterator&gt;</a></span><span class="cp"></span>
267302

268303
<span class="kt">int</span> <span class="nf">main</span><span class="p">()</span> <span class="p">{</span>
269-
<span class="c1">// 3 を出力しまくる</span>
304+
<span class="c1">// 値3を10個出力する</span>
270305
<span class="n"><span style="color:#ff0000">std::fill_n</span></span><span class="p">(</span><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="p">),</span> <span class="mi">10</span><span class="p">,</span> <span class="mi">3</span><span class="p">);</span>
271306
<span class="p">}</span>
272307
</code></pre></div>
273308
</div></p>
274-
<h3>出力</h3>
309+
<h4>出力</h4>
275310
<p><pre><code>3,3,3,3,3,3,3,3,3,3,
276311
</code></pre></p>
312+
<h3>波カッコ初期化を入力として使用する (C++26)</h3>
313+
<p><div class="yata" id="f338aabdb5f4ecfdecc593ef13c7abdfad8e362a"><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>
314+
<span class="cp">#include</span> <span class="cpf"><a href="../iostream.html">&lt;iostream&gt;</a></span><span class="cp"></span>
315+
<span class="cp">#include</span> <span class="cpf"><a href="../vector.html">&lt;vector&gt;</a></span><span class="cp"></span>
316+
317+
<span class="k">struct</span> <span class="n">Point</span> <span class="p">{</span>
318+
<span class="kt">int</span> <span class="n">x</span><span class="p">;</span>
319+
<span class="kt">int</span> <span class="n">y</span><span class="p">;</span>
320+
321+
<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>
322+
<span class="p">};</span>
323+
324+
<span class="kt">int</span> <span class="nf">main</span><span class="p">()</span> <span class="p">{</span>
325+
<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="p">(</span><span class="mi">5</span><span class="p">);</span>
326+
327+
<span class="c1">// 先頭3個の要素を値{1, 2}で埋める</span>
328+
<span class="n"><span style="color:#ff0000">std::fill_n</span></span><span class="p">(</span><span class="n"><a href="../vector/vector/begin.html">v.begin()</a></span><span class="p">,</span> <span class="mi">3</span><span class="p">,</span> <span class="p">{</span><span class="mi">1</span><span class="p">,</span> <span class="mi">2</span><span class="p">});</span>
329+
330+
<span class="k">for</span> <span class="p">(</span><span class="k">const</span> <span class="n">Point</span><span class="o">&amp;</span> <span class="nl">p</span> <span class="p">:</span> <span class="n">v</span><span class="p">)</span> <span class="p">{</span>
331+
<span class="n"><a href="../iostream/cout.html">std::cout</a></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="s">","</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>
332+
<span class="p">}</span>
333+
<span class="p">}</span>
334+
</code></pre></div>
335+
</div></p>
336+
<h4>出力</h4>
337+
<p><pre><code>1,2
338+
1,2
339+
1,2
340+
0,0
341+
0,0
342+
</code></pre></p>
277343
<h2>実装例</h2>
278344
<p><div class="codehilite"><pre><span></span><code><span class="k">template</span> <span class="o">&lt;</span><span class="k">class</span> <span class="nc">OutputIterator</span><span class="p">,</span> <span class="k">class</span> <span class="nc">Size</span><span class="p">,</span> <span class="k">class</span> <span class="nc">T</span><span class="o">&gt;</span>
279345
<span class="cp"># if __cplusplus &gt;= 201103L</span>
@@ -306,6 +372,10 @@ <h2>参照</h2>
306372
<a class="cpprefjp-defined-word" data-desc="関数呼び出し式の評価結果となるオブジェクト・値">戻り値</a>が追加されるきっかけとなったレポート</li>
307373
<li><a href="http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2017/p0202r3.html" target="_blank">P0202R3 Add Constexpr Modifiers to Functions in <code>&lt;algorithm&gt;</code> and <code>&lt;utility&gt;</code> Headers</a></li>
308374
<li><a href="http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2017/p0467r2.html" target="_blank">P0467R2 Iterator Concerns for Parallel Algorithms</a></li>
375+
<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>
376+
<li>C++26で波カッコ初期化 (リスト初期化) に対応した</li>
377+
</ul>
378+
</li>
309379
</ul></div>
310380

311381
</div>

0 commit comments

Comments
 (0)