6868
6969 </ head >
7070 < body >
71- < header data-kunai-mdinfo ="{"meta": {"header": ["algorithm"], "namespace": ["std"], "id-type": ["function template"]}, "sources": [{"id": "e2ba54ab0902a2e49a07c42b1f58d5ec2cdbfe99", "source": "#include <algorithm>\n#include <iostream>\n#include <iterator>\n\nint main() {\n // 3 \u3092\u51fa\u529b\u3057\u307e\u304f\u308b\n std::fill_n(std::ostream_iterator<int>(std::cout, \",\"), 10, 3);\n}\n"}], "page_id": ["reference", "algorithm", "fill_n"]} ">
71+ < header data-kunai-mdinfo ="{"meta": {"header": ["algorithm"], "namespace": ["std"], "id-type": ["function template"]}, "sources": [{"id": "1ef64ff2d4164f29e28f0510f5c3586c73126841", "source": "#include <algorithm>\n#include <iostream>\n#include <iterator>\n\nint main() {\n // \u50243\u309210\u500b\u51fa\u529b\u3059\u308b\n std::fill_n(std::ostream_iterator<int>(std::cout, \",\"), 10, 3);\n}\n"}, {"id": "f338aabdb5f4ecfdecc593ef13c7abdfad8e362a", "source": "#include <algorithm>\n#include <iostream>\n#include <vector>\n\nstruct Point {\n int x;\n int y;\n\n bool operator==(const Point& other) const = default;\n};\n\nint main() {\n std::vector<Point> 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& p : v) {\n std::cout << p.x << \",\" << p.y << std::endl;\n }\n}\n"}], "page_id": ["reference", "algorithm", "fill_n"]} ">
7272 < nav class ="navbar navbar-default " role ="navigation ">
7373 < div class ="container-fluid ">
7474 < div class ="navbar-header ">
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 ">
214214
215215 < div class ="identifier-type "> function template</ div > < div class ="header "> <algorithm></ 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 "> <</ 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 "> ></ span >
217+ < span class ="k "> template</ span > < span class ="o "> <</ 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 "> ></ 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 "> &</ 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 "> <</ 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 "> ></ span >
224+ < span class ="k "> template</ span > < span class ="o "> <</ 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 "> ></ 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 "> &</ 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 "> <</ 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 "> ></ span >
231+ < span class ="k "> template</ span > < span class ="o "> <</ 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 "> ></ 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 "> &</ 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 "> <</ 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 "> <</ span > < span class ="n "> OutputIterator</ span > < span class ="o "> >::</ span > < span class ="n "> value_type</ span > < span class ="o "> ></ 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 "> &</ 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 "> <</ 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 "> ></ span >
246+ < span class ="k "> template</ span > < span class ="o "> <</ 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 "> ></ 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 "> &&</ 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 "> &</ 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 "> <</ 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 "> <</ span > < span class ="n "> ForwardIterator</ span > < span class ="o "> >::</ span > < span class ="n "> value_type</ span > < span class ="o "> ></ 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 "> &&</ 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 "> &</ 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 "> <</ span > < span class ="n "> T</ span > < span class ="o "> ></ 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 "> <algorithm></ 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 "> <algorithm></ a > </ span > < span class ="cp "> </ span >
265300< span class ="cp "> #include</ span > < span class ="cpf "> < a href ="../iostream.html "> <iostream></ a > </ span > < span class ="cp "> </ span >
266301< span class ="cp "> #include</ span > < span class ="cpf "> < a href ="../iterator.html "> <iterator></ 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 "> <</ span > < span class ="kt "> int</ span > < span class ="o "> ></ 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 "> <algorithm></ a > </ span > < span class ="cp "> </ span >
314+ < span class ="cp "> #include</ span > < span class ="cpf "> < a href ="../iostream.html "> <iostream></ a > </ span > < span class ="cp "> </ span >
315+ < span class ="cp "> #include</ span > < span class ="cpf "> < a href ="../vector.html "> <vector></ 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 "> &</ 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 "> <</ span > < span class ="n "> Point</ span > < span class ="o "> ></ 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 "> &</ 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 "> <<</ span > < span class ="n "> p</ span > < span class ="p "> .</ span > < span class ="n "> x</ span > < span class ="o "> <<</ span > < span class ="s "> ","</ span > < span class ="o "> <<</ span > < span class ="n "> p</ span > < span class ="p "> .</ span > < span class ="n "> y</ span > < span class ="o "> <<</ 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 "> <</ 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 "> ></ span >
279345< span class ="cp "> # if __cplusplus >= 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 > <algorithm></ code > and < code > <utility></ 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