Skip to content

Commit 77d9daf

Browse files
author
cpprefjp-autoupdate
committed
update automatically
1 parent 9b26746 commit 77d9daf

File tree

4 files changed

+445
-325
lines changed

4 files changed

+445
-325
lines changed

reference/algorithm/binary_search.html

Lines changed: 80 additions & 24 deletions
Original file line numberDiff line numberDiff line change
@@ -68,7 +68,7 @@
6868

6969
</head>
7070
<body>
71-
<header data-kunai-mdinfo="{&#34;meta&#34;: {&#34;header&#34;: [&#34;algorithm&#34;], &#34;namespace&#34;: [&#34;std&#34;], &#34;id-type&#34;: [&#34;function template&#34;]}, &#34;sources&#34;: [{&#34;id&#34;: &#34;ab2d850b33fce73e0288c8e1429b1c1cb7313297&#34;, &#34;source&#34;: &#34;#include &lt;iostream&gt;\n#include &lt;vector&gt;\n#include &lt;algorithm&gt;\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&lt;int&gt; v = {3, 1, 4, 6, 5};\n\n if (std::binary_search(v.begin(), v.end(), 4)) {\n std::cout &lt;&lt; \&#34;found\&#34; &lt;&lt; std::endl;\n }\n else {\n std::cout &lt;&lt; \&#34;not found\&#34; &lt;&lt; std::endl;\n }\n}\n&#34;}], &#34;page_id&#34;: [&#34;reference&#34;, &#34;algorithm&#34;, &#34;binary_search&#34;]}">
71+
<header data-kunai-mdinfo="{&#34;meta&#34;: {&#34;header&#34;: [&#34;algorithm&#34;], &#34;namespace&#34;: [&#34;std&#34;], &#34;id-type&#34;: [&#34;function template&#34;]}, &#34;sources&#34;: [{&#34;id&#34;: &#34;ab2d850b33fce73e0288c8e1429b1c1cb7313297&#34;, &#34;source&#34;: &#34;#include &lt;iostream&gt;\n#include &lt;vector&gt;\n#include &lt;algorithm&gt;\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&lt;int&gt; v = {3, 1, 4, 6, 5};\n\n if (std::binary_search(v.begin(), v.end(), 4)) {\n std::cout &lt;&lt; \&#34;found\&#34; &lt;&lt; std::endl;\n }\n else {\n std::cout &lt;&lt; \&#34;not found\&#34; &lt;&lt; std::endl;\n }\n}\n&#34;}, {&#34;id&#34;: &#34;d8c193c50343d21fbb07c07ccf70eb8b7e6929fe&#34;, &#34;source&#34;: &#34;#include &lt;algorithm&gt;\n#include &lt;iostream&gt;\n#include &lt;vector&gt;\n\nstruct Point {\n int x;\n int y;\n\n bool operator==(const Point&amp; other) const = default;\n auto operator&lt;=&gt;(const Point&amp; other) const = default;\n};\n\nint main() {\n std::vector&lt;Point&gt; 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 &lt;&lt; \&#34;found\&#34; &lt;&lt; std::endl;\n }\n else {\n std::cout &lt;&lt; \&#34;not found\&#34; &lt;&lt; std::endl;\n }\n}\n&#34;}], &#34;page_id&#34;: [&#34;reference&#34;, &#34;algorithm&#34;, &#34;binary_search&#34;]}">
7272
<nav class="navbar navbar-default" role="navigation">
7373
<div class="container-fluid">
7474
<div class="navbar-header">
@@ -188,12 +188,12 @@
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>
@@ -214,27 +214,35 @@
214214

215215
<div class="identifier-type">function template</div><div class="header">&lt;algorithm&gt;</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">&lt;</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">&gt;</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">&amp;</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">&lt;</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">&gt;</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">&amp;</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">&lt;</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">&gt;</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">&amp;</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">&lt;</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">&gt;</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">&amp;</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">&lt;</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">&gt;</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">&amp;</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">&lt;</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">&gt;</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">&amp;</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">&lt;</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">&gt;</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">&amp;</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">&lt;</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">&gt;</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">&amp;</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">&lt;</span><span class="n">T</span><span class="o">&gt;</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">&lt;iostream&gt;</a></span><span class="cp"></span>
256274
<span class="cp">#include</span> <span class="cpf"><a href="../vector.html">&lt;vector&gt;</a></span><span class="cp"></span>
257275
<span class="cp">#include</span> <span class="cpf"><a href="../algorithm.html">&lt;algorithm&gt;</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">&lt;algorithm&gt;</a></span><span class="cp"></span>
298+
<span class="cp">#include</span> <span class="cpf"><a href="../iostream.html">&lt;iostream&gt;</a></span><span class="cp"></span>
299+
<span class="cp">#include</span> <span class="cpf"><a href="../vector.html">&lt;vector&gt;</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">&amp;</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">&lt;=&gt;</span><span class="p">(</span><span class="k">const</span> <span class="n">Point</span><span class="o">&amp;</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">&lt;</span><span class="n">Point</span><span class="o">&gt;</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">&lt;&lt;</span> <span class="s">"found"</span> <span class="o">&lt;&lt;</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">&lt;&lt;</span> <span class="s">"not found"</span> <span class="o">&lt;&lt;</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>&lt;algorithm&gt;</code> and <code>&lt;utility&gt;</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

Comments
 (0)