6868
6969 </ head >
7070 < body >
71- < header data-kunai-mdinfo ="{"meta": {"header": ["algorithm"], "namespace": ["std::ranges"], "id-type": ["function template"], "cpp": ["cpp20"]}, "sources": [{"id": "d7a8449db5c7e1cf04f00bf6a5c909323cc89246", "source": "#include <algorithm>\n#include <iostream>\n#include <array>\n\nint main() {\n constexpr std::array v = { 3, 1, 4 };\n\n std::cout << std::boolalpha;\n\n // \u5168\u3066\u306e\u8981\u7d20\u304c 5 \u3088\u308a\u5c0f\u3055\u3044\u304b\n constexpr bool result1 = std::ranges::all_of(v, [](int x) { return x < 5; });\n std::cout << result1 << std::endl;\n\n // \u5168\u3066\u306e\u8981\u7d20\u304c 1 \u3067\u3042\u308b\u304b\n constexpr bool result2 = std::ranges::all_of(v, [](int x) { return x == 1; });\n std::cout << result2 << std::endl;\n}\n"}], "page_id": ["reference", "algorithm", "ranges_all_of"]} ">
71+ < header data-kunai-mdinfo ="{"meta": {"header": ["algorithm"], "namespace": ["std::ranges"], "id-type": ["function template"], "cpp": ["cpp20"]}, "sources": [{"id": "d7a8449db5c7e1cf04f00bf6a5c909323cc89246", "source": "#include <algorithm>\n#include <iostream>\n#include <array>\n\nint main() {\n constexpr std::array v = { 3, 1, 4 };\n\n std::cout << std::boolalpha;\n\n // \u5168\u3066\u306e\u8981\u7d20\u304c 5 \u3088\u308a\u5c0f\u3055\u3044\u304b\n constexpr bool result1 = std::ranges::all_of(v, [](int x) { return x < 5; });\n std::cout << result1 << std::endl;\n\n // \u5168\u3066\u306e\u8981\u7d20\u304c 1 \u3067\u3042\u308b\u304b\n constexpr bool result2 = std::ranges::all_of(v, [](int x) { return x == 1; });\n std::cout << result2 << std::endl;\n}\n"}, {"id": "aad9b7428c5763925df78e611e33dd064823d892", "source": "#include <algorithm>\n#include <execution>\n#include <iostream>\n#include <vector>\n\nint main() {\n std::vector<int> v = {2, 4, 6, 8, 10};\n\n std::cout << std::boolalpha;\n\n // \u4e26\u5217\u306b\u5168\u3066\u306e\u8981\u7d20\u304c\u5076\u6570\u3067\u3042\u308b\u304b\u3092\u5224\u5b9a\n bool result = std::ranges::all_of(std::execution::par, v,\n [](int x) { return x % 2 == 0; });\n std::cout << result << std::endl;\n}\n"}], "page_id": ["reference", "algorithm", "ranges_all_of"]} ">
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 ="2025-08-31T10:06:36 ">
192- 2025年08月31日 10時06分36秒
191+ < span itemprop ="datePublished " content ="2026-02-05T04:53:18 ">
192+ 2026年02月05日 04時53分18秒
193193 </ span >
194194 < br />
195195 < span itemprop ="author " itemscope itemtype ="http://schema.org/Person ">
196- < span itemprop ="name "> Raclamusi </ span >
196+ < span itemprop ="name "> Akira Takahashi </ span >
197197 </ span >
198198 が更新
199199 </ small > </ p >
226226 < span class ="n "> < a href ="../iterator/indirect_unary_predicate.html "> indirect_unary_predicate</ a > </ span > < span class ="o "> <</ span > < span class ="n "> < a href ="../iterator/projected.html "> projected</ a > </ span > < span class ="o "> <</ span > < span class ="n "> < a href ="../ranges/iterator_t.html "> iterator_t</ a > </ span > < span class ="o "> <</ span > < span class ="n "> R</ span > < span class ="o "> ></ span > < span class ="p "> ,</ span > < span class ="n "> Proj</ span > < span class ="o "> >></ span > < span class ="n "> Pred</ span > < span class ="o "> ></ span >
227227 < span class ="k "> constexpr</ span > < span class ="kt "> bool</ span >
228228 < span class ="n "> all_of</ span > < span class ="p "> (</ span > < span class ="n "> R</ span > < span class ="o "> &&</ span > < span class ="n "> r</ span > < span class ="p "> ,</ span > < span class ="n "> Pred</ span > < span class ="n "> pred</ span > < span class ="p "> ,</ span > < 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 >
229+
230+ < span class ="k "> template</ span > < span class ="o "> <</ span > < span class ="n "> < a href ="../execution/execution-policy.html "> execution-policy</ a > </ span > < span class ="n "> Ep</ span > < span class ="p "> ,</ span >
231+ < span class ="n "> < a href ="../iterator/random_access_iterator.html "> random_access_iterator</ a > </ span > < span class ="n "> I</ span > < span class ="p "> ,</ span >
232+ < span class ="n "> < a href ="../iterator/sized_sentinel_for.html "> sized_sentinel_for</ a > </ span > < span class ="o "> <</ span > < span class ="n "> I</ span > < span class ="o "> ></ span > < span class ="n "> S</ span > < span class ="p "> ,</ span >
233+ < 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 >
234+ < span class ="n "> < a href ="../iterator/indirect_unary_predicate.html "> indirect_unary_predicate</ a > </ span > < span class ="o "> <</ span > < span class ="n "> < a href ="../iterator/projected.html "> projected</ a > </ span > < span class ="o "> <</ span > < span class ="n "> I</ span > < span class ="p "> ,</ span > < span class ="n "> Proj</ span > < span class ="o "> >></ span > < span class ="n "> Pred</ span > < span class ="o "> ></ span >
235+ < span class ="kt "> bool</ span > < span class ="n "> all_of</ span > < span class ="p "> (</ span > < span class ="n "> Ep</ span > < span class ="o "> &&</ span > < span class ="n "> exec</ span > < span class ="p "> ,</ span >
236+ < span class ="n "> I</ span > < span class ="n "> first</ span > < span class ="p "> ,</ span >
237+ < span class ="n "> S</ span > < span class ="n "> last</ span > < span class ="p "> ,</ span >
238+ < span class ="n "> Pred</ span > < span class ="n "> pred</ span > < span class ="p "> ,</ span >
239+ < span class ="n "> Proj</ span > < span class ="n "> proj</ span > < span class ="o "> =</ span > < span class ="p "> {});</ span > < span class ="c1 "> // (3) C++26</ span >
240+
241+ < span class ="k "> template</ span > < span class ="o "> <</ span > < span class ="n "> < a href ="../execution/execution-policy.html "> execution-policy</ a > </ span > < span class ="n "> Ep</ span > < span class ="p "> ,</ span >
242+ < span class ="n "> < a href ="../ranges/sized-random-access-range.html "> sized-random-access-range</ a > </ span > < span class ="n "> R</ span > < span class ="p "> ,</ span >
243+ < 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 >
244+ < span class ="n "> < a href ="../iterator/indirect_unary_predicate.html "> indirect_unary_predicate</ a > </ span > < span class ="o "> <</ span > < span class ="n "> < a href ="../iterator/projected.html "> projected</ a > </ span > < span class ="o "> <</ span > < span class ="n "> < a href ="../ranges/iterator_t.html "> iterator_t</ a > </ span > < span class ="o "> <</ span > < span class ="n "> R</ span > < span class ="o "> ></ span > < span class ="p "> ,</ span > < span class ="n "> Proj</ span > < span class ="o "> >></ span > < span class ="n "> Pred</ span > < span class ="o "> ></ span >
245+ < span class ="kt "> bool</ span > < span class ="n "> all_of</ span > < span class ="p "> (</ span > < span class ="n "> Ep</ span > < span class ="o "> &&</ span > < span class ="n "> exec</ span > < span class ="p "> ,</ span >
246+ < span class ="n "> R</ span > < span class ="o "> &&</ span > < span class ="n "> r</ span > < span class ="p "> ,</ span >
247+ < span class ="n "> Pred</ span > < span class ="n "> pred</ span > < span class ="p "> ,</ span >
248+ < span class ="n "> Proj</ span > < span class ="n "> proj</ span > < span class ="o "> =</ span > < span class ="p "> {});</ span > < span class ="c1 "> // (4) C++26</ span >
229249< span class ="p "> }</ span >
230250</ code > </ pre > </ div >
231251</ p >
@@ -234,6 +254,8 @@ <h2>概要</h2>
234254< ul >
235255< li > (1): < a class ="cpprefjp-defined-word " data-desc ="2つのイテレータで表現される半開区間を表す。C++20からイテレータと番兵で異なる型であっても指定可能になる "> イテレータ範囲</ a > を指定する</ li >
236256< li > (2): Rangeを直接指定する</ li >
257+ < li > (3): (1)の並列アルゴリズム版。実行ポリシーを指定する</ li >
258+ < li > (4): (2)の並列アルゴリズム版。実行ポリシーを指定する</ li >
237259</ ul >
238260< h2 > < a class ="cpprefjp-defined-word " data-desc ="関数等の意味論を構成する要素の1つ。Constraints。関数であればオーバーロード解決に参加するための条件、それ以外であれば受け付ける型の条件 "> テンプレートパラメータ制約</ a > </ h2 >
239261< ul >
@@ -254,6 +276,7 @@ <h2><a class="cpprefjp-defined-word" data-desc="関数呼び出し式の評価
254276< h2 > < a class ="cpprefjp-defined-word " data-desc ="関数等の意味論を構成する要素の1つ。Complexity。関数が使うアルゴリズムの空間計算量・時間計算量 "> 計算量</ a > </ h2 >
255277< p > 最大で < code > last - first</ code > 回 < code > proj</ code > と < code > pred</ code > を実行する。</ p >
256278< h2 > 例</ h2 >
279+ < h3 > 基本的な使い方</ h3 >
257280< p > < div class ="yata " id ="d7a8449db5c7e1cf04f00bf6a5c909323cc89246 "> < 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 >
258281< span class ="cp "> #include</ span > < span class ="cpf "> < a href ="../iostream.html "> <iostream></ a > </ span > < span class ="cp "> </ span >
259282< span class ="cp "> #include</ span > < span class ="cpf "> < a href ="../array.html "> <array></ a > </ span > < span class ="cp "> </ span >
@@ -273,10 +296,31 @@ <h2>例</h2>
273296< span class ="p "> }</ span >
274297</ code > </ pre > </ div >
275298</ div > </ p >
276- < h3 > 出力</ h3 >
299+ < h4 > 出力</ h4 >
277300< p > < pre > < code > true
278301false
279302</ code > </ pre > </ p >
303+ < h3 > 並列アルゴリズムの例 (C++26)</ h3 >
304+ < p > < div class ="yata " id ="aad9b7428c5763925df78e611e33dd064823d892 "> < 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 >
305+ < span class ="cp "> #include</ span > < span class ="cpf "> < a href ="../execution.html "> <execution></ a > </ span > < span class ="cp "> </ span >
306+ < span class ="cp "> #include</ span > < span class ="cpf "> < a href ="../iostream.html "> <iostream></ a > </ span > < span class ="cp "> </ span >
307+ < span class ="cp "> #include</ span > < span class ="cpf "> < a href ="../vector.html "> <vector></ a > </ span > < span class ="cp "> </ span >
308+
309+ < span class ="kt "> int</ span > < span class ="nf "> main</ span > < span class ="p "> ()</ span > < span class ="p "> {</ span >
310+ < span class ="n "> < a href ="../vector/vector.html "> std::vector</ a > </ span > < span class ="o "> <</ span > < span class ="kt "> int</ span > < span class ="o "> ></ span > < span class ="n "> v</ span > < span class ="o "> =</ span > < span class ="p "> {</ span > < span class ="mi "> 2</ span > < span class ="p "> ,</ span > < span class ="mi "> 4</ span > < span class ="p "> ,</ span > < span class ="mi "> 6</ span > < span class ="p "> ,</ span > < span class ="mi "> 8</ span > < span class ="p "> ,</ span > < span class ="mi "> 10</ span > < span class ="p "> };</ span >
311+
312+ < span class ="n "> < a href ="../iostream/cout.html "> std::cout</ a > </ span > < span class ="o "> <<</ span > < span class ="n "> < a href ="../ios/boolalpha.html "> std::boolalpha</ a > </ span > < span class ="p "> ;</ span >
313+
314+ < span class ="c1 "> // 並列に全ての要素が偶数であるかを判定</ span >
315+ < span class ="kt "> bool</ span > < span class ="n "> result</ span > < span class ="o "> =</ span > < span class ="n "> < span style ="color:#ff0000 "> std::ranges::all_of</ span > </ span > < span class ="p "> (</ span > < span class ="n "> < a href ="../execution/execution/execution_policy.html "> std::execution::par</ a > </ span > < span class ="p "> ,</ span > < span class ="n "> v</ span > < span class ="p "> ,</ span >
316+ < span class ="p "> [](</ span > < span class ="kt "> int</ span > < span class ="n "> x</ span > < span class ="p "> )</ span > < span class ="p "> {</ span > < span class ="k "> return</ span > < span class ="n "> x</ span > < span class ="o "> %</ span > < span class ="mi "> 2</ span > < span class ="o "> ==</ span > < span class ="mi "> 0</ span > < span class ="p "> ;</ span > < span class ="p "> });</ span >
317+ < span class ="n "> < a href ="../iostream/cout.html "> std::cout</ a > </ span > < span class ="o "> <<</ span > < span class ="n "> result</ span > < span class ="o "> <<</ span > < span class ="n "> < a href ="../ostream/endl.html "> std::endl</ a > </ span > < span class ="p "> ;</ span >
318+ < span class ="p "> }</ span >
319+ </ code > </ pre > </ div >
320+ </ div > </ p >
321+ < h4 > 出力</ h4 >
322+ < p > < pre > < code > true
323+ </ code > </ pre > </ p >
280324< h2 > 実装例</ h2 >
281325< p > < div class ="codehilite "> < pre > < span > </ span > < code > < span class ="k "> struct</ span > < span class ="n "> all_of_impl</ span > < span class ="p "> {</ span >
282326 < span class ="k "> template</ span > < span class ="o "> <</ span > < span class ="n "> < a href ="../iterator/input_iterator.html "> input_iterator</ a > </ span > < span class ="n "> I</ span > < span class ="p "> ,</ span > < span class ="n "> < a href ="../iterator/sentinel_for.html "> sentinel_for</ a > </ span > < span class ="o "> <</ span > < span class ="n "> I</ span > < span class ="o "> ></ span > < span class ="n "> S</ span > < span class ="p "> ,</ span > < 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 > < span class ="n "> < a href ="../iterator/indirect_unary_predicate.html "> indirect_unary_predicate</ a > </ span > < span class ="o "> <</ span > < span class ="n "> < a href ="../iterator/projected.html "> projected</ a > </ span > < span class ="o "> <</ span > < span class ="n "> I</ span > < span class ="p "> ,</ span > < span class ="n "> Proj</ span > < span class ="o "> >></ span > < span class ="n "> Pred</ span > < span class ="o "> ></ span >
@@ -316,6 +360,7 @@ <h2>関連項目</h2>
316360< h2 > 参照</ h2 >
317361< ul >
318362< li > < a href ="https://timsong-cpp.github.io/cppwp/n4861/algorithms " target ="_blank "> N4861 25 Algorithms library</ a > </ li >
363+ < li > < a href ="https://open-std.org/jtc1/sc22/wg21/docs/papers/2025/p3179r9.html " target ="_blank "> P3179R9 C++ parallel range algorithms</ a > </ li >
319364</ ul > </ div >
320365
321366 </ div >
0 commit comments