Skip to content

Commit 3425a73

Browse files
author
cpprefjp-autoupdate
committed
update automatically
1 parent ff41efb commit 3425a73

File tree

5 files changed

+374
-319
lines changed

5 files changed

+374
-319
lines changed

reference/algorithm/ranges_count.html

Lines changed: 36 additions & 3 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::ranges&#34;], &#34;id-type&#34;: [&#34;function template&#34;], &#34;cpp&#34;: [&#34;cpp20&#34;]}, &#34;sources&#34;: [{&#34;id&#34;: &#34;45332a17c097e6a2a7f9e6ffb13dfbbc6e6a2465&#34;, &#34;source&#34;: &#34;#include &lt;algorithm&gt;\n#include &lt;iostream&gt;\n#include &lt;array&gt;\n\nint main() {\n constexpr std::array v = { 1,4,3,3,1,2,2,1 };\n\n // \u5024\u304c 1 \u306e\u8981\u7d20\u304c\u3044\u304f\u3064\u3042\u308b\u304b\u3092\u6570\u3048\u308b\n int n = std::ranges::count(v, 1);\n std::cout &lt;&lt; \&#34;count of 1: \&#34; &lt;&lt; n &lt;&lt; std::endl;\n}\n&#34;}, {&#34;id&#34;: &#34;f23abd2a3412abbb16ca324d9e32d2ba62615afa&#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};\n\nint main() {\n std::vector&lt;Point&gt; v = {\n {1, 2},\n {3, 4},\n {5, 6},\n {1, 2},\n };\n\n // \u5024\u304c {1, 2} \u306e\u8981\u7d20\u304c\u3044\u304f\u3064\u3042\u308b\u304b\u3092\u6570\u3048\u308b\n int n = std::ranges::count(v, {1, 2});\n std::cout &lt;&lt; \&#34;count of {1,2}: \&#34; &lt;&lt; n &lt;&lt; std::endl;\n}\n&#34;}], &#34;page_id&#34;: [&#34;reference&#34;, &#34;algorithm&#34;, &#34;ranges_count&#34;]}">
71+
<header data-kunai-mdinfo="{&#34;meta&#34;: {&#34;header&#34;: [&#34;algorithm&#34;], &#34;namespace&#34;: [&#34;std::ranges&#34;], &#34;id-type&#34;: [&#34;function template&#34;], &#34;cpp&#34;: [&#34;cpp20&#34;]}, &#34;sources&#34;: [{&#34;id&#34;: &#34;45332a17c097e6a2a7f9e6ffb13dfbbc6e6a2465&#34;, &#34;source&#34;: &#34;#include &lt;algorithm&gt;\n#include &lt;iostream&gt;\n#include &lt;array&gt;\n\nint main() {\n constexpr std::array v = { 1,4,3,3,1,2,2,1 };\n\n // \u5024\u304c 1 \u306e\u8981\u7d20\u304c\u3044\u304f\u3064\u3042\u308b\u304b\u3092\u6570\u3048\u308b\n int n = std::ranges::count(v, 1);\n std::cout &lt;&lt; \&#34;count of 1: \&#34; &lt;&lt; n &lt;&lt; std::endl;\n}\n&#34;}, {&#34;id&#34;: &#34;f23abd2a3412abbb16ca324d9e32d2ba62615afa&#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};\n\nint main() {\n std::vector&lt;Point&gt; v = {\n {1, 2},\n {3, 4},\n {5, 6},\n {1, 2},\n };\n\n // \u5024\u304c {1, 2} \u306e\u8981\u7d20\u304c\u3044\u304f\u3064\u3042\u308b\u304b\u3092\u6570\u3048\u308b\n int n = std::ranges::count(v, {1, 2});\n std::cout &lt;&lt; \&#34;count of {1,2}: \&#34; &lt;&lt; n &lt;&lt; std::endl;\n}\n&#34;}, {&#34;id&#34;: &#34;72dd84014c7fd8c11eb4d56a0960cd0b5cf37d28&#34;, &#34;source&#34;: &#34;#include &lt;algorithm&gt;\n#include &lt;iostream&gt;\n#include &lt;vector&gt;\n#include &lt;string&gt;\n\nstruct Item {\n int id;\n std::string label;\n};\n\nint main() {\n std::vector&lt;Point&gt; v = {\n {1, \&#34;foo\&#34;},\n {3, \&#34;bar\&#34;},\n {5, \&#34;foo\&#34;},\n {2, \&#34;baz\&#34;},\n };\n\n // \u30e1\u30f3\u30d0\u5909\u6570\u30dd\u30a4\u30f3\u30bf\u3092\u4f7f\u3063\u3066 label==\&#34;foo\&#34; \u306e\u8981\u7d20\u6570\u3092\u6570\u3048\u308b\n int n1 = std::ranges::count(v, std::string(\&#34;foo\&#34;), &amp;Item::label);\n std::cout &lt;&lt; \&#34;count of label==\\\&#34;foo\\\&#34;: \&#34; &lt;&lt; n1 &lt;&lt; std::endl;\n\n // \u30e9\u30e0\u30c0\u5f0f\u3092\u4f7f\u3063\u3066 id==1 \u306e\u8981\u7d20\u6570\u3092\u6570\u3048\u308b\n int n2 = std::ranges::count(v, 1, [](const Item&amp; p) { return p.id; });\n std::cout &lt;&lt; \&#34;count of id==1: \&#34; &lt;&lt; n2 &lt;&lt; std::endl;\n}\n&#34;}], &#34;page_id&#34;: [&#34;reference&#34;, &#34;algorithm&#34;, &#34;ranges_count&#34;]}">
7272
<nav class="navbar navbar-default" role="navigation">
7373
<div class="container-fluid">
7474
<div class="navbar-header">
@@ -188,8 +188,8 @@
188188

189189
<p class="text-right"><small>
190190
最終更新日時(UTC):
191-
<span itemprop="datePublished" content="2025-05-26T07:38:51">
192-
2025年05月26日 07時38分51秒
191+
<span itemprop="datePublished" content="2025-05-27T08:23:04">
192+
2025年05月27日 08時23分04秒
193193
</span>
194194
<br/>
195195
<span itemprop="author" itemscope itemtype="http://schema.org/Person">
@@ -337,6 +337,39 @@ <h3>波カッコ初期化を入力として使用する (C++26)</h3>
337337
<h4>出力</h4>
338338
<p><pre><code>count of {1,2}: 2
339339
</code></pre></p>
340+
<h3>射影変換を使用した例</h3>
341+
<p><div class="yata" id="72dd84014c7fd8c11eb4d56a0960cd0b5cf37d28"><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>
342+
<span class="cp">#include</span> <span class="cpf"><a href="../iostream.html">&lt;iostream&gt;</a></span><span class="cp"></span>
343+
<span class="cp">#include</span> <span class="cpf"><a href="../vector.html">&lt;vector&gt;</a></span><span class="cp"></span>
344+
<span class="cp">#include</span> <span class="cpf"><a href="../string.html">&lt;string&gt;</a></span><span class="cp"></span>
345+
346+
<span class="k">struct</span> <span class="n">Item</span> <span class="p">{</span>
347+
<span class="kt">int</span> <span class="n">id</span><span class="p">;</span>
348+
<span class="n"><a href="../string/basic_string.html">std::string</a></span> <span class="n">label</span><span class="p">;</span>
349+
<span class="p">};</span>
350+
351+
<span class="kt">int</span> <span class="nf">main</span><span class="p">()</span> <span class="p">{</span>
352+
<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>
353+
<span class="p">{</span><span class="mi">1</span><span class="p">,</span> <span class="s">"foo"</span><span class="p">},</span>
354+
<span class="p">{</span><span class="mi">3</span><span class="p">,</span> <span class="s">"bar"</span><span class="p">},</span>
355+
<span class="p">{</span><span class="mi">5</span><span class="p">,</span> <span class="s">"foo"</span><span class="p">},</span>
356+
<span class="p">{</span><span class="mi">2</span><span class="p">,</span> <span class="s">"baz"</span><span class="p">},</span>
357+
<span class="p">};</span>
358+
359+
<span class="c1">// メンバ変数ポインタを使って label=="foo" の要素数を数える</span>
360+
<span class="kt">int</span> <span class="n">n1</span> <span class="o">=</span> <span class="n"><span style="color:#ff0000">std::ranges::count</span></span><span class="p">(</span><span class="n">v</span><span class="p">,</span> <span class="n"><a href="../string/basic_string.html">std::string</a></span><span class="p">(</span><span class="s">"foo"</span><span class="p">),</span> <span class="o">&amp;</span><span class="n">Item</span><span class="o">::</span><span class="n">label</span><span class="p">);</span>
361+
<span class="n"><a href="../iostream/cout.html">std::cout</a></span> <span class="o">&lt;&lt;</span> <span class="s">"count of label==</span><span class="se">\"</span><span class="s">foo</span><span class="se">\"</span><span class="s">: "</span> <span class="o">&lt;&lt;</span> <span class="n">n1</span> <span class="o">&lt;&lt;</span> <span class="n"><a href="../ostream/endl.html">std::endl</a></span><span class="p">;</span>
362+
363+
<span class="c1">// ラムダ式を使って id==1 の要素数を数える</span>
364+
<span class="kt">int</span> <span class="n">n2</span> <span class="o">=</span> <span class="n"><span style="color:#ff0000">std::ranges::count</span></span><span class="p">(</span><span class="n">v</span><span class="p">,</span> <span class="mi">1</span><span class="p">,</span> <span class="p">[](</span><span class="k">const</span> <span class="n">Item</span><span class="o">&amp;</span> <span class="n">p</span><span class="p">)</span> <span class="p">{</span> <span class="k">return</span> <span class="n">p</span><span class="p">.</span><span class="n">id</span><span class="p">;</span> <span class="p">});</span>
365+
<span class="n"><a href="../iostream/cout.html">std::cout</a></span> <span class="o">&lt;&lt;</span> <span class="s">"count of id==1: "</span> <span class="o">&lt;&lt;</span> <span class="n">n2</span> <span class="o">&lt;&lt;</span> <span class="n"><a href="../ostream/endl.html">std::endl</a></span><span class="p">;</span>
366+
<span class="p">}</span>
367+
</code></pre></div>
368+
</div></p>
369+
<h4>出力</h4>
370+
<p><pre><code>count of label=="foo": 2
371+
count of id==1: 2
372+
</code></pre></p>
340373
<h2>実装例</h2>
341374
<p><div class="codehilite"><pre><span></span><code><span class="k">struct</span> <span class="n">count_impl</span> <span class="p">{</span>
342375
<span class="k">template</span><span class="o">&lt;</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">&lt;</span><span class="n">I</span><span class="o">&gt;</span> <span class="n">S</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">Proj</span> <span class="o">=</span> <span class="n"><a href="../functional/identity.html">identity</a></span><span class="o">&gt;</span>

0 commit comments

Comments
 (0)