68
68
69
69
</ head >
70
70
< body >
71
- < header data-kunai-mdinfo ="{"meta": {"header": ["algorithm"], "namespace": ["std"], "id-type": ["function template"]}, "sources": [{"id": "ab2d850b33fce73e0288c8e1429b1c1cb7313297", "source": "#include <iostream>\n#include <vector>\n#include <algorithm>\n\nint main()\n{\n // binary_search \u3067 4 \u3092\u691c\u7d22\u3059\u308b\u5834\u5408\u3001\n // 4 \u3088\u308a\u5c0f\u3055\u3044\u7269\u30014 \u3068\u7b49\u3057\u3044\u7269\u30014 \u3088\u308a\u5927\u304d\u3044\u7269\u304c\u305d\u306e\u9806\u306b\u4e26\u3093\u3067\u3044\u308c\u3070\u3001\n // \u5fc5\u305a\u3057\u3082\u30bd\u30fc\u30c8\u3055\u308c\u3066\u3044\u308b\u5fc5\u8981\u306f\u306a\u3044\u3002\n std::vector<int> v = {3, 1, 4, 6, 5};\n\n if (std::binary_search(v.begin(), v.end(), 4)) {\n std::cout << \"found\" << std::endl;\n }\n else {\n std::cout << \"not found\" << std::endl;\n }\n}\n"}], "page_id": ["reference", "algorithm", "binary_search"]} ">
71
+ < header data-kunai-mdinfo ="{"meta": {"header": ["algorithm"], "namespace": ["std"], "id-type": ["function template"]}, "sources": [{"id": "ab2d850b33fce73e0288c8e1429b1c1cb7313297", "source": "#include <iostream>\n#include <vector>\n#include <algorithm>\n\nint main()\n{\n // binary_search \u3067 4 \u3092\u691c\u7d22\u3059\u308b\u5834\u5408\u3001\n // 4 \u3088\u308a\u5c0f\u3055\u3044\u7269\u30014 \u3068\u7b49\u3057\u3044\u7269\u30014 \u3088\u308a\u5927\u304d\u3044\u7269\u304c\u305d\u306e\u9806\u306b\u4e26\u3093\u3067\u3044\u308c\u3070\u3001\n // \u5fc5\u305a\u3057\u3082\u30bd\u30fc\u30c8\u3055\u308c\u3066\u3044\u308b\u5fc5\u8981\u306f\u306a\u3044\u3002\n std::vector<int> v = {3, 1, 4, 6, 5};\n\n if (std::binary_search(v.begin(), v.end(), 4)) {\n std::cout << \"found\" << std::endl;\n }\n else {\n std::cout << \"not found\" << std::endl;\n }\n}\n"}, {"id": "d8c193c50343d21fbb07c07ccf70eb8b7e6929fe", "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 auto operator<=>(const Point& other) const = default;\n};\n\nint main() {\n std::vector<Point> v = {\n {1, 2},\n {3, 4},\n {5, 6},\n };\n\n // \u5024{3, 4}\u3092\u4e8c\u5206\u691c\u7d22\n bool found = std::binary_search(v.begin(), v.end(), {3, 4});\n if (found) {\n std::cout << \"found\" << std::endl;\n }\n else {\n std::cout << \"not found\" << std::endl;\n }\n}\n"}], "page_id": ["reference", "algorithm", "binary_search"]} ">
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 ="2025-04-04T13:37:58 ">
192
- 2025年04月04日 13時37分58秒
191
+ < span itemprop ="datePublished " content ="2025-05-27T06:06:45 ">
192
+ 2025年05月27日 06時06分45秒
193
193
</ span >
194
194
< br />
195
195
< span itemprop ="author " itemscope itemtype ="http://schema.org/Person ">
196
- < span itemprop ="name "> rotarymars </ span >
196
+ < span itemprop ="name "> Akira Takahashi </ span >
197
197
</ span >
198
198
が更新
199
199
</ small > </ p >
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 "> binary_search</ 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 "> bool</ span > < span class ="n "> binary_search</ 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 >
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 "> bool</ span >
220
+ < span class ="n "> binary_search</ 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 "> bool</ span >
226
+ < span class ="n "> binary_search</ 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 >
221
229
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 " > bool </ span > < span class =" n " > binary_search </ 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 >
226
-
227
- < 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 =" p " > , </ span > < span class ="k " > class </ span > < span class ="nc " > Compare </ span > < span class ="o " > > </ span >
228
- < span class ="kt " > bool </ span > < span class ="n "> binary_search </ span > < span class ="p " > ( </ span > < span class =" n " > ForwardIterator </ span > < span class ="n "> first </ span > < span class ="p "> ,</ span >
229
- < span class ="n "> ForwardIterator </ span > < span class ="n "> last </ span > < span class ="p "> , </ span >
230
- < span class ="k "> const </ span > < span class ="n " > T </ span > < span class ="o " > & </ span > < span class ="n " > value </ span > < span class ="p "> ,</ span >
231
- < span class ="n " > Compare </ span > < span class ="n " > comp </ span > < span class ="p "> ); </ span > < span class =" c1 " > // (2) C++03 </ span >
232
-
233
- < 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 =" p " > , </ span > < span class =" k " > class </ span > < span class =" nc " > Compare </ span > < span class =" o " > > </ span >
234
- < span class =" k " > constexpr </ span > < span class =" kt " > bool </ span > < span class ="n "> binary_search</ span > < span class ="p "> (</ span > < span class ="n "> ForwardIterator</ span > < span class ="n "> first</ span > < span class ="p "> ,</ span >
235
- < span class ="n "> ForwardIterator</ span > < span class ="n "> last</ span > < span class ="p "> ,</ span >
236
- < span class ="k "> const</ span > < span class ="n "> T</ span > < span class ="o "> &</ span > < span class ="n "> value</ span > < span class ="p "> ,</ span >
237
- < span class ="n "> Compare</ span > < span class ="n "> comp</ span > < span class ="p "> );</ span > < span class ="c1 "> // (2) C++20</ span >
230
+ < span class ="k "> template</ span > < span class ="o "> <</ span > < span class ="k "> class</ span > < span class ="nc "> ForwardIterator</ span > < span class ="p "> ,</ span >
231
+ < span class ="k " > class </ span > < span class ="nc " > T </ span > < span class ="p "> ,</ span >
232
+ < span class ="k " > class </ span > < span class ="nc " > Compare </ span > < span class ="o " > > </ span >
233
+ < span class ="kt " > bool </ span >
234
+ < span class =" n " > binary_search </ span > < span class =" p " > ( </ span > < span class =" n " > ForwardIterator </ span > < span class =" n " > first </ span > < span class =" p " > , </ span >
235
+ < span class ="n " > ForwardIterator </ span > < span class ="n " > last </ span > < span class ="p " > , </ span >
236
+ < span class ="k " > const </ span > < span class ="n "> T </ span > < span class ="o " > & </ span > < span class ="n "> value </ span > < span class ="p "> ,</ span >
237
+ < span class ="n "> Compare </ span > < span class ="n "> comp </ span > < span class ="p "> ); </ span > < span class =" c1 " > // (2) C++03 </ span >
238
+ < span class ="k "> template </ span > < span class ="o " > < </ span > < span class ="k " > class </ span > < span class ="nc " > ForwardIterator </ span > < span class ="p "> ,</ span >
239
+ < span class ="k " > class </ span > < span class ="nc " > T </ span > < span class ="p "> , </ span >
240
+ < span class =" k " > class </ span > < span class =" nc " > Compare </ span > < span class =" o " > > </ span >
241
+ < span class ="k "> constexpr </ span > < span class ="kt " > bool </ span >
242
+ < span class ="n "> binary_search</ span > < span class ="p "> (</ span > < span class ="n "> ForwardIterator</ span > < span class ="n "> first</ span > < span class ="p "> ,</ span >
243
+ < span class ="n "> ForwardIterator</ span > < span class ="n "> last</ 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 >
245
+ < span class ="n "> Compare</ span > < span class ="n "> comp</ span > < span class ="p "> );</ span > < span class ="c1 "> // (2) C++20</ span >
238
246
< span class ="p "> }</ span >
239
247
</ code > </ pre > </ div >
240
248
</ p >
@@ -250,8 +258,18 @@ <h2><a class="cpprefjp-defined-word" data-desc="関数等の意味論を構成
250
258
< h2 > 備考</ h2 >
251
259
< ul >
252
260
< li > < code > comp</ code > は 2 引数の関数オブジェクトで、1 番目の引数が 2 番目の引数「より小さい」場合に < code > true</ code > を、そうでない場合に < code > false</ code > を返すものとして扱われる。</ li >
261
+ < li > (1), (2) :< ul >
262
+ < li > C++26 : 引数として波カッコ初期化< code > {}</ code > を受け付ける
263
+ < br />
264
+ < 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 >
265
+ < span class ="kt "> bool</ span > < span class ="n "> found</ span > < span class ="o "> =</ span > < span class ="n "> std</ span > < span class ="o "> ::</ span > < span class ="n "> binary_search</ 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 >
266
+ </ code > </ pre > </ div >
267
+ </ li >
268
+ </ ul >
269
+ </ li >
253
270
</ ul >
254
271
< h2 > 例</ h2 >
272
+ < h3 > 基本的な使い方</ h3 >
255
273
< p > < div class ="yata " id ="ab2d850b33fce73e0288c8e1429b1c1cb7313297 "> < div class ="codehilite "> < pre > < span > </ span > < code > < span class ="cp "> #include</ span > < span class ="cpf "> < a href ="../iostream.html "> <iostream></ a > </ span > < span class ="cp "> </ span >
256
274
< span class ="cp "> #include</ span > < span class ="cpf "> < a href ="../vector.html "> <vector></ a > </ span > < span class ="cp "> </ span >
257
275
< span class ="cp "> #include</ span > < span class ="cpf "> < a href ="../algorithm.html "> <algorithm></ a > </ span > < span class ="cp "> </ span >
@@ -272,6 +290,40 @@ <h2>例</h2>
272
290
< span class ="p "> }</ span >
273
291
</ code > </ pre > </ div >
274
292
</ div > </ p >
293
+ < h4 > 出力</ h4 >
294
+ < p > < pre > < code > found
295
+ </ code > </ pre > </ p >
296
+ < h3 > 波カッコ初期化を入力として使用する (C++26)</ h3 >
297
+ < p > < div class ="yata " id ="d8c193c50343d21fbb07c07ccf70eb8b7e6929fe "> < 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
+ < span class ="cp "> #include</ span > < span class ="cpf "> < a href ="../iostream.html "> <iostream></ a > </ span > < span class ="cp "> </ span >
299
+ < span class ="cp "> #include</ span > < span class ="cpf "> < a href ="../vector.html "> <vector></ a > </ span > < span class ="cp "> </ span >
300
+
301
+ < span class ="k "> struct</ span > < span class ="n "> Point</ span > < span class ="p "> {</ span >
302
+ < span class ="kt "> int</ span > < span class ="n "> x</ span > < span class ="p "> ;</ span >
303
+ < span class ="kt "> int</ span > < span class ="n "> y</ span > < span class ="p "> ;</ span >
304
+
305
+ < 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 >
306
+ < span class ="k "> auto</ 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 >
307
+ < span class ="p "> };</ 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 ="n "> Point</ span > < span class ="o "> ></ span > < span class ="n "> v</ span > < span class ="o "> =</ span > < span class ="p "> {</ span >
311
+ < span class ="p "> {</ span > < span class ="mi "> 1</ span > < span class ="p "> ,</ span > < span class ="mi "> 2</ span > < span class ="p "> },</ span >
312
+ < span class ="p "> {</ span > < span class ="mi "> 3</ span > < span class ="p "> ,</ span > < span class ="mi "> 4</ span > < span class ="p "> },</ span >
313
+ < span class ="p "> {</ span > < span class ="mi "> 5</ span > < span class ="p "> ,</ span > < span class ="mi "> 6</ span > < span class ="p "> },</ span >
314
+ < span class ="p "> };</ span >
315
+
316
+ < span class ="c1 "> // 値{3, 4}を二分検索</ span >
317
+ < span class ="kt "> bool</ span > < span class ="n "> found</ span > < span class ="o "> =</ span > < span class ="n "> < span style ="color:#ff0000 "> std::binary_search</ 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 "> 3</ span > < span class ="p "> ,</ span > < span class ="mi "> 4</ span > < span class ="p "> });</ span >
318
+ < span class ="k "> if</ span > < span class ="p "> (</ span > < span class ="n "> found</ span > < span class ="p "> )</ span > < span class ="p "> {</ span >
319
+ < span class ="n "> < a href ="../iostream/cout.html "> std::cout</ a > </ span > < span class ="o "> <<</ span > < span class ="s "> "found"</ span > < span class ="o "> <<</ span > < span class ="n "> < a href ="../ostream/endl.html "> std::endl</ a > </ span > < span class ="p "> ;</ span >
320
+ < span class ="p "> }</ span >
321
+ < span class ="k "> else</ span > < span class ="p "> {</ span >
322
+ < span class ="n "> < a href ="../iostream/cout.html "> std::cout</ a > </ span > < span class ="o "> <<</ span > < span class ="s "> "not found"</ span > < span class ="o "> <<</ span > < span class ="n "> < a href ="../ostream/endl.html "> std::endl</ a > </ span > < span class ="p "> ;</ span >
323
+ < span class ="p "> }</ span >
324
+ < span class ="p "> }</ span >
325
+ </ code > </ pre > </ div >
326
+ </ div > </ p >
275
327
< h3 > 出力</ h3 >
276
328
< p > < pre > < code > found
277
329
</ code > </ pre > </ p >
@@ -312,6 +364,10 @@ <h2>参照</h2>
312
364
</ ul >
313
365
</ li >
314
366
< 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 >
367
+ < 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 >
368
+ < li > C++26で波カッコ初期化 (リスト初期化) に対応した</ li >
369
+ </ ul >
370
+ </ li >
315
371
</ ul > </ div >
316
372
317
373
</ div >
0 commit comments