6868
6969 </ head >
7070 < 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"]} ">
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-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秒
193193 </ span >
194194 < br />
195195 < span itemprop ="author " itemscope itemtype ="http://schema.org/Person ">
196- < span itemprop ="name "> rotarymars </ span >
196+ < span itemprop ="name "> Akira Takahashi </ span >
197197 </ span >
198198 が更新
199199 </ small > </ p >
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 "> binary_search</ 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 "> 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 >
221229
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 >
238246< span class ="p "> }</ span >
239247</ code > </ pre > </ div >
240248</ p >
@@ -250,8 +258,18 @@ <h2><a class="cpprefjp-defined-word" data-desc="関数等の意味論を構成
250258< h2 > 備考</ h2 >
251259< ul >
252260< 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 >
253270</ ul >
254271< h2 > 例</ h2 >
272+ < h3 > 基本的な使い方</ h3 >
255273< 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 >
256274< span class ="cp "> #include</ span > < span class ="cpf "> < a href ="../vector.html "> <vector></ a > </ span > < span class ="cp "> </ span >
257275< 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>
272290< span class ="p "> }</ span >
273291</ code > </ pre > </ div >
274292</ 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 >
275327< h3 > 出力</ h3 >
276328< p > < pre > < code > found
277329</ code > </ pre > </ p >
@@ -312,6 +364,10 @@ <h2>参照</h2>
312364</ ul >
313365</ li >
314366< 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 >
315371</ ul > </ div >
316372
317373 </ div >
0 commit comments