68
68
69
69
</ head >
70
70
< body >
71
- < header data-kunai-mdinfo ="{"meta": {"header": ["algorithm"], "namespace": ["std"], "id-type": ["function template"]}, "sources": [{"id": "3196eee14b0d849eb2143181a869c1426d718d85", "source": "#include <algorithm>\n#include <iostream>\n#include <vector>\n\nint main() {\n std::vector<int> v(5);\n\n // v \u3092 3 \u306e\u5024\u3067\u57cb\u3081\u308b\n std::fill(v.begin(), v.end(), 3);\n\n std::for_each(v.begin(), v.end(), [](int x) { std::cout << x << \",\"; });\n}\n"}], "page_id": ["reference", "algorithm", "fill"]} ">
71
+ < header data-kunai-mdinfo ="{"meta": {"header": ["algorithm"], "namespace": ["std"], "id-type": ["function template"]}, "sources": [{"id": "3196eee14b0d849eb2143181a869c1426d718d85", "source": "#include <algorithm>\n#include <iostream>\n#include <vector>\n\nint main() {\n std::vector<int> v(5);\n\n // v \u3092 3 \u306e\u5024\u3067\u57cb\u3081\u308b\n std::fill(v.begin(), v.end(), 3);\n\n std::for_each(v.begin(), v.end(), [](int x) { std::cout << x << \",\"; });\n}\n"}, {"id": "3d05b60ba3e6ba9ba0b176b9f9e3b89f7dfcf9f1", "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 std::fill(v.begin(), v.end(), {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"]} ">
72
72
< nav class ="navbar navbar-default " role ="navigation ">
73
73
< div class ="container-fluid ">
74
74
< div class ="navbar-header ">
188
188
189
189
< p class ="text-right "> < small >
190
190
最終更新日時(UTC):
191
- < span itemprop ="datePublished " content ="2022-12-27T15:47:26 ">
192
- 2022年12月27日 15時47分26秒
191
+ < span itemprop ="datePublished " content ="2025-05-26T09:30:02 ">
192
+ 2025年05月26日 09時30分02秒
193
193
</ span >
194
194
< br />
195
195
< span itemprop ="author " itemscope itemtype ="http://schema.org/Person ">
214
214
215
215
< 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</ span > </ h1 >
216
216
< 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 "> ForwardIterator</ span > < span class ="p "> ,</ span > < span class ="k "> class</ span > < span class ="nc "> T</ span > < span class ="o "> ></ span >
218
- < span class ="kt "> void</ span > < span class ="n "> fill</ span > < span class ="p "> (</ span > < span class ="n "> ForwardIterator</ span > < span class ="n "> first</ span > < span class ="p "> ,</ span >
219
- < span class ="n "> ForwardIterator</ span > < span class ="n "> last</ span > < span class ="p "> ,</ span >
220
- < 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 >
221
-
222
- < span class ="k "> template</ span > < span class ="o "> <</ span > < span class ="k "> class</ span > < span class ="nc "> ForwardIterator</ span > < span class ="p "> ,</ span > < span class ="k "> class</ span > < span class ="nc "> T</ span > < span class ="o "> ></ span >
223
- < span class ="k "> constexpr</ span > < span class ="kt "> void</ span > < span class ="n "> fill</ span > < span class ="p "> (</ span > < span class ="n "> ForwardIterator</ span > < span class ="n "> first</ span > < span class ="p "> ,</ span >
224
- < span class ="n "> ForwardIterator</ span > < span class ="n "> last</ span > < span class ="p "> ,</ span >
225
- < 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 >
217
+ < span class ="k "> template</ span > < span class ="o "> <</ span > < span class ="k "> class</ span > < span class ="nc "> ForwardIterator</ span > < span class ="p "> ,</ span >
218
+ < span class ="k "> class</ span > < span class ="nc "> T</ span > < span class ="o "> ></ span >
219
+ < span class ="kt "> void</ span >
220
+ < span class ="n "> fill</ span > < span class ="p "> (</ span > < span class ="n "> ForwardIterator</ span > < span class ="n "> first</ span > < span class ="p "> ,</ span >
221
+ < span class ="n "> ForwardIterator</ span > < span class ="n "> last</ span > < span class ="p "> ,</ span >
222
+ < 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 >
223
+ < span class ="k "> template</ span > < span class ="o "> <</ span > < span class ="k "> class</ span > < span class ="nc "> ForwardIterator</ span > < span class ="p "> ,</ span >
224
+ < span class ="k "> class</ span > < span class ="nc "> T</ span > < span class ="o "> ></ span >
225
+ < span class ="k "> constexpr</ span > < span class ="kt "> void</ span >
226
+ < span class ="n "> fill</ span > < span class ="p "> (</ span > < span class ="n "> ForwardIterator</ span > < span class ="n "> first</ span > < span class ="p "> ,</ span >
227
+ < span class ="n "> ForwardIterator</ span > < span class ="n "> last</ span > < span class ="p "> ,</ span >
228
+ < 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 >
229
+ < span class ="k "> template</ span > < span class ="o "> <</ span > < span class ="k "> class</ span > < span class ="nc "> ForwardIterator</ span > < span class ="p "> ,</ span >
230
+ < 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 >
231
+ < span class ="k "> constexpr</ span > < span class ="kt "> void</ span >
232
+ < span class ="n "> fill</ span > < span class ="p "> (</ span > < span class ="n "> ForwardIterator</ span > < span class ="n "> first</ span > < span class ="p "> ,</ span >
233
+ < span class ="n "> ForwardIterator</ span > < span class ="n "> last</ span > < span class ="p "> ,</ span >
234
+ < 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 >
226
235
227
- < 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 "> 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 >
237
+ < span class ="k "> class</ span > < span class ="nc "> ForwardIterator</ span > < span class ="p "> ,</ span >
228
238
< span class ="k "> class</ span > < span class ="nc "> T</ span > < span class ="o "> ></ span >
229
- < span class ="kt "> void</ span > < span class ="n "> fill</ 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 >
230
- < span class ="n "> ForwardIterator</ span > < span class ="n "> first</ span > < span class ="p "> ,</ span >
231
- < span class ="n "> ForwardIterator</ span > < span class ="n "> last</ span > < span class ="p "> ,</ span >
232
- < 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 >
239
+ < span class ="kt "> void</ span >
240
+ < span class ="n "> fill</ 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 >
241
+ < span class ="n "> ForwardIterator</ span > < span class ="n "> first</ span > < span class ="p "> ,</ span >
242
+ < span class ="n "> ForwardIterator</ span > < span class ="n "> last</ span > < span class ="p "> ,</ span >
243
+ < 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 >
244
+ < 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 >
245
+ < span class ="k "> class</ span > < span class ="nc "> ForwardIterator</ span > < span class ="p "> ,</ span >
246
+ < 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 >
247
+ < span class ="kt "> void</ span >
248
+ < span class ="n "> fill</ 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 >
249
+ < span class ="n "> ForwardIterator</ span > < span class ="n "> first</ span > < span class ="p "> ,</ span >
250
+ < span class ="n "> ForwardIterator</ span > < span class ="n "> last</ span > < span class ="p "> ,</ span >
251
+ < 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 >
233
252
< span class ="p "> }</ span >
234
253
</ code > </ pre > </ div >
235
254
</ p >
236
255
< h2 > 概要</ h2 >
237
256
< p > < a class ="cpprefjp-defined-word " data-desc ="2つのイテレータで表現される半開区間を表す。C++20からイテレータと番兵で異なる型であっても指定可能になる "> イテレータ範囲</ a > < code > [first, last)</ code > のすべての要素に指定された値を書き込む。</ p >
238
- < h2 > 要件 </ h2 >
257
+ < h2 > < a class =" cpprefjp-defined-word " data-desc =" 関数等の意味論を構成する要素の1つ。Mandates。満たさなければプログラムが不適格となる要件。この要件は、オーバーロード解決によって選択された関数内での`static_assert`の定数条件式や、関数に対するdelete宣言などで表現できる " > 適格要件 </ a > </ h2 >
239
258
< p > < code > value</ code > は < code > output iterator</ code > へ書き込み可能でなければならない</ p >
240
259
< h2 > 効果</ h2 >
241
260
< p > < code > [first,last)</ code > 内の全ての要素に < code > value</ code > を代入する</ p >
242
261
< h2 > < a class ="cpprefjp-defined-word " data-desc ="関数等の意味論を構成する要素の1つ。Complexity。関数が使うアルゴリズムの空間計算量・時間計算量 "> 計算量</ a > </ h2 >
243
262
< p > 正確に < code > last - first</ code > 回の代入を行う</ p >
263
+ < h2 > 備考</ h2 >
264
+ < ul >
265
+ < li > (1), (2) :< ul >
266
+ < li > C++26 : 引数として波カッコ初期化< code > {}</ code > を受け付ける
267
+ < br />
268
+ < 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 >
269
+ < span class ="n "> std</ span > < span class ="o "> ::</ span > < span class ="n "> fill</ 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 "> < a href ="../vector/vector/end.html "> v.end()</ a > </ 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 >
270
+ </ code > </ pre > </ div >
271
+ </ li >
272
+ </ ul >
273
+ </ li >
274
+ </ ul >
244
275
< h2 > 例</ h2 >
276
+ < h3 > 基本的な使い方</ h3 >
245
277
< p > < div class ="yata " id ="3196eee14b0d849eb2143181a869c1426d718d85 "> < 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 >
246
278
< span class ="cp "> #include</ span > < span class ="cpf "> < a href ="../iostream.html "> <iostream></ a > </ span > < span class ="cp "> </ span >
247
279
< span class ="cp "> #include</ span > < span class ="cpf "> < a href ="../vector.html "> <vector></ a > </ span > < span class ="cp "> </ span >
@@ -256,9 +288,39 @@ <h2>例</h2>
256
288
< span class ="p "> }</ span >
257
289
</ code > </ pre > </ div >
258
290
</ div > </ p >
259
- < h3 > 出力</ h3 >
291
+ < h4 > 出力</ h4 >
260
292
< p > < pre > < code > 3,3,3,3,3,
261
293
</ code > </ pre > </ p >
294
+ < h3 > 波カッコ初期化を入力として使用する (C++26)</ h3 >
295
+ < p > < div class ="yata " id ="3d05b60ba3e6ba9ba0b176b9f9e3b89f7dfcf9f1 "> < 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 >
296
+ < span class ="cp "> #include</ span > < span class ="cpf "> < a href ="../iostream.html "> <iostream></ a > </ span > < span class ="cp "> </ span >
297
+ < span class ="cp "> #include</ span > < span class ="cpf "> < a href ="../vector.html "> <vector></ a > </ span > < span class ="cp "> </ span >
298
+
299
+ < span class ="k "> struct</ span > < span class ="n "> Point</ span > < span class ="p "> {</ span >
300
+ < span class ="kt "> int</ span > < span class ="n "> x</ span > < span class ="p "> ;</ span >
301
+ < span class ="kt "> int</ span > < span class ="n "> y</ span > < span class ="p "> ;</ span >
302
+
303
+ < 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 >
304
+ < span class ="p "> };</ span >
305
+
306
+ < span class ="kt "> int</ span > < span class ="nf "> main</ span > < span class ="p "> ()</ span > < span class ="p "> {</ span >
307
+ < 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 >
308
+
309
+ < span class ="n "> < span style ="color:#ff0000 "> std::fill</ 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 ="n "> < a href ="../vector/vector/end.html "> v.end()</ a > </ 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 >
310
+
311
+ < 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 >
312
+ < 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 >
313
+ < span class ="p "> }</ span >
314
+ < span class ="p "> }</ span >
315
+ </ code > </ pre > </ div >
316
+ </ div > </ p >
317
+ < h4 > 出力</ h4 >
318
+ < p > < pre > < code > 1,2
319
+ 1,2
320
+ 1,2
321
+ 1,2
322
+ 1,2
323
+ </ code > </ pre > </ p >
262
324
< h2 > 実装例</ h2 >
263
325
< 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 "> ForwardIterator</ span > < span class ="p "> ,</ span > < span class ="k "> class</ span > < span class ="nc "> T</ span > < span class ="o "> ></ span >
264
326
< span class ="kt "> void</ span > < span class ="n "> fill</ span > < span class ="p "> (</ span > < span class ="n "> ForwardIterator</ span > < span class ="n "> first</ span > < span class ="p "> ,</ span > < span class ="n "> ForwardIterator</ span > < span class ="n "> last</ span > < span class ="p "> ,</ span > < 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 ="p "> {</ span >
@@ -270,6 +332,10 @@ <h2>実装例</h2>
270
332
< h2 > 参照</ h2 >
271
333
< ul >
272
334
< 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 >
335
+ < 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 >
336
+ < li > C++26で波カッコ初期化 (リスト初期化) に対応した</ li >
337
+ </ ul >
338
+ </ li >
273
339
</ ul > </ div >
274
340
275
341
</ div >
0 commit comments