Skip to content

Commit de3a1b6

Browse files
author
cpprefjp-autoupdate
committed
update automatically
1 parent 0a80d95 commit de3a1b6

File tree

4 files changed

+201
-39
lines changed

4 files changed

+201
-39
lines changed

reference/map/map/at.html

Lines changed: 2 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -200,8 +200,8 @@
200200

201201
<p class="text-right"><small>
202202
最終更新日時(UTC):
203-
<span itemprop="datePublished" content="2025-05-15T06:31:22">
204-
2025年05月15日 06時31分22秒
203+
<span itemprop="datePublished" content="2025-05-15T10:05:30">
204+
2025年05月15日 10時05分30秒
205205
</span>
206206
<br/>
207207
<span itemprop="author" itemscope itemtype="http://schema.org/Person">
@@ -326,9 +326,6 @@ <h2>関連項目</h2>
326326
<h2>参照</h2>
327327
<ul>
328328
<li><a href="http://www.open-std.org/jtc1/sc22/wg21/docs/lwg-defects.html#464" target="_blank">LWG Issue 464. Suggestion for new member functions in standard containers</a></li>
329-
</ul>
330-
<h2>参照</h2>
331-
<ul>
332329
<li><a href="http://open-std.org/jtc1/sc22/wg21/docs/papers/2023/p2363r5.html" target="_blank">P2363R5 Extending associative containers with the remaining heterogeneous overloads</a><ul>
333330
<li>C++26で<code>template &lt;class K&gt;</code>のバージョンが追加された</li>
334331
</ul>

reference/map/map/insert_or_assign.html

Lines changed: 49 additions & 30 deletions
Original file line numberDiff line numberDiff line change
@@ -200,8 +200,8 @@
200200

201201
<p class="text-right"><small>
202202
最終更新日時(UTC):
203-
<span itemprop="datePublished" content="2024-06-11T13:45:38">
204-
2024年06月11日 13時45分38秒
203+
<span itemprop="datePublished" content="2025-05-15T10:05:30">
204+
2025年05月15日 10時05分30秒
205205
</span>
206206
<br/>
207207
<span itemprop="author" itemscope itemtype="http://schema.org/Person">
@@ -226,16 +226,33 @@
226226

227227
<div class="identifier-type">function template</div><div class="header">&lt;map&gt;</div><h1 itemprop="name"><span class="namespace" title="namespace std">std::</span><span class="class" title="class map">map::</span><span class="token">insert_or_assign</span><span class="cpp cpp17" title="C++17で追加">(C++17)</span></h1>
228228
<div itemprop="articleBody"><p><div class="codehilite"><pre><span></span><code><span class="k">template</span> <span class="o">&lt;</span><span class="k">class</span> <span class="nc">M</span><span class="o">&gt;</span>
229-
<span class="n"><a href="../../utility/pair.html">pair</a></span><span class="o">&lt;</span><span class="n">iterator</span><span class="p">,</span> <span class="kt">bool</span><span class="o">&gt;</span> <span class="n">insert_or_assign</span><span class="p">(</span><span class="k">const</span> <span class="n">key_type</span><span class="o">&amp;</span> <span class="n">k</span><span class="p">,</span> <span class="n">M</span><span class="o">&amp;&amp;</span> <span class="n">obj</span><span class="p">);</span> <span class="c1">// (1)</span>
230-
229+
<span class="n"><a href="../../utility/pair.html">pair</a></span><span class="o">&lt;</span><span class="n">iterator</span><span class="p">,</span> <span class="kt">bool</span><span class="o">&gt;</span>
230+
<span class="n">insert_or_assign</span><span class="p">(</span><span class="k">const</span> <span class="n">key_type</span><span class="o">&amp;</span> <span class="n">k</span><span class="p">,</span>
231+
<span class="n">M</span><span class="o">&amp;&amp;</span> <span class="n">obj</span><span class="p">);</span> <span class="c1">// (1) C++17</span>
231232
<span class="k">template</span> <span class="o">&lt;</span><span class="k">class</span> <span class="nc">M</span><span class="o">&gt;</span>
232-
<span class="n"><a href="../../utility/pair.html">pair</a></span><span class="o">&lt;</span><span class="n">iterator</span><span class="p">,</span> <span class="kt">bool</span><span class="o">&gt;</span> <span class="n">insert_or_assign</span><span class="p">(</span><span class="n">key_type</span><span class="o">&amp;&amp;</span> <span class="n">k</span><span class="p">,</span> <span class="n">M</span><span class="o">&amp;&amp;</span> <span class="n">obj</span><span class="p">);</span> <span class="c1">// (2)</span>
233-
233+
<span class="n"><a href="../../utility/pair.html">pair</a></span><span class="o">&lt;</span><span class="n">iterator</span><span class="p">,</span> <span class="kt">bool</span><span class="o">&gt;</span>
234+
<span class="n">insert_or_assign</span><span class="p">(</span><span class="n">key_type</span><span class="o">&amp;&amp;</span> <span class="n">k</span><span class="p">,</span>
235+
<span class="n">M</span><span class="o">&amp;&amp;</span> <span class="n">obj</span><span class="p">);</span> <span class="c1">// (2) C++17</span>
234236
<span class="k">template</span> <span class="o">&lt;</span><span class="k">class</span> <span class="nc">M</span><span class="o">&gt;</span>
235-
<span class="n">iterator</span> <span class="n">insert_or_assign</span><span class="p">(</span><span class="n">const_iterator</span> <span class="n">hint</span><span class="p">,</span> <span class="k">const</span> <span class="n">key_type</span><span class="o">&amp;</span> <span class="n">k</span><span class="p">,</span> <span class="n">M</span><span class="o">&amp;&amp;</span> <span class="n">obj</span><span class="p">);</span> <span class="c1">// (3)</span>
236-
237+
<span class="n">iterator</span>
238+
<span class="n">insert_or_assign</span><span class="p">(</span><span class="n">const_iterator</span> <span class="n">hint</span><span class="p">,</span>
239+
<span class="k">const</span> <span class="n">key_type</span><span class="o">&amp;</span> <span class="n">k</span><span class="p">,</span>
240+
<span class="n">M</span><span class="o">&amp;&amp;</span> <span class="n">obj</span><span class="p">);</span> <span class="c1">// (3) C++17</span>
237241
<span class="k">template</span> <span class="o">&lt;</span><span class="k">class</span> <span class="nc">M</span><span class="o">&gt;</span>
238-
<span class="n">iterator</span> <span class="n">insert_or_assign</span><span class="p">(</span><span class="n">const_iterator</span> <span class="n">hint</span><span class="p">,</span> <span class="n">key_type</span><span class="o">&amp;&amp;</span> <span class="n">k</span><span class="p">,</span> <span class="n">M</span><span class="o">&amp;&amp;</span> <span class="n">obj</span><span class="p">);</span> <span class="c1">// (4)</span>
242+
<span class="n">iterator</span>
243+
<span class="n">insert_or_assign</span><span class="p">(</span><span class="n">const_iterator</span> <span class="n">hint</span><span class="p">,</span>
244+
<span class="n">key_type</span><span class="o">&amp;&amp;</span> <span class="n">k</span><span class="p">,</span>
245+
<span class="n">M</span><span class="o">&amp;&amp;</span> <span class="n">obj</span><span class="p">);</span> <span class="c1">// (4) C++17</span>
246+
247+
<span class="k">template</span> <span class="o">&lt;</span><span class="k">class</span> <span class="nc">K</span><span class="p">,</span> <span class="k">class</span> <span class="nc">M</span><span class="o">&gt;</span>
248+
<span class="n"><a href="../../utility/pair.html">pair</a></span><span class="o">&lt;</span><span class="n">iterator</span><span class="p">,</span> <span class="kt">bool</span><span class="o">&gt;</span>
249+
<span class="n">insert_or_assign</span><span class="p">(</span><span class="n">K</span><span class="o">&amp;&amp;</span> <span class="n">k</span><span class="p">,</span>
250+
<span class="n">M</span><span class="o">&amp;&amp;</span> <span class="n">obj</span><span class="p">);</span> <span class="c1">// (5) C++26</span>
251+
<span class="k">template</span> <span class="o">&lt;</span><span class="k">class</span> <span class="nc">K</span><span class="p">,</span> <span class="k">class</span> <span class="nc">M</span><span class="o">&gt;</span>
252+
<span class="n">iterator</span>
253+
<span class="n">insert_or_assign</span><span class="p">(</span><span class="n">const_iterator</span> <span class="n">hint</span><span class="p">,</span>
254+
<span class="n">K</span><span class="o">&amp;&amp;</span> <span class="n">k</span><span class="p">,</span>
255+
<span class="n">M</span><span class="o">&amp;&amp;</span> <span class="n">obj</span><span class="p">);</span> <span class="c1">// (6) C++26</span>
239256
</code></pre></div>
240257
</p>
241258
<h2>概要</h2>
@@ -246,52 +263,50 @@ <h2>概要</h2>
246263
<li>(2) : <code>key_type</code>型の一時オブジェクトのキーをとって挿入もしくは代入する</li>
247264
<li>(3) : 挿入位置のヒントをともない、<code>key_type</code>型のキーをとって挿入もしくは代入する</li>
248265
<li>(4) : 挿入位置のヒントをともない、<code>key_type</code>型の一時オブジェクトのキーをとって挿入もしくは代入する</li>
266+
<li>(5) : <code>key_type</code>と比較可能な<code>K</code>型のキーをとって挿入もしくは代入する</li>
267+
<li>(6) : 挿入位置のヒントをともない、<code>key_type</code>と比較可能な<code>K</code>型のキーをとって挿入もしくは代入する</li>
249268
</ul>
250269
<h2><a class="cpprefjp-defined-word" data-desc="関数等の意味論を構成する要素の1つ。Constraints。関数であればオーバーロード解決に参加するための条件、それ以外であれば受け付ける型の条件">テンプレートパラメータ制約</a></h2>
251270
<ul>
252-
<li>(1)、(3) : <code><a href="../../type_traits/is_assignable.html">is_assignable_v</a>&lt;mapped_type&amp;, M&amp;&amp;&gt;</code><code>true</code> であること。<code>value_type</code> は、<code>k</code>, <code><a href="../../utility/forward.html">forward</a>&lt;M&gt;(obj)</code> から <code>map</code> に直接構築可能であること</li>
271+
<li>(5), (6) : <code>key_compare::is_transparent</code> が妥当な式であること</li>
272+
</ul>
273+
<h2><a class="cpprefjp-defined-word" data-desc="関数等の意味論を構成する要素の1つ。Mandates。満たさなければプログラムが不適格となる要件。この要件は、オーバーロード解決によって選択された関数内での`static_assert`の定数条件式や、関数に対するdelete宣言などで表現できる">適格要件</a></h2>
274+
<ul>
275+
<li>(1)、(3)、(5)、(6) : <code><a href="../../type_traits/is_assignable.html">is_assignable_v</a>&lt;mapped_type&amp;, M&amp;&amp;&gt;</code><code>true</code> であること。<code>value_type</code> は、<code>k</code>, <code><a href="../../utility/forward.html">forward</a>&lt;M&gt;(obj)</code> から <code>map</code> に直接構築可能であること</li>
253276
<li>(2)、(4) : <code><a href="../../type_traits/is_assignable.html">is_assignable_v</a>&lt;mapped_type&amp;, M&amp;&amp;&gt;</code><code>true</code> であること。<code>value_type</code> は、<code><a href="../../utility/move.html">move</a>(k)</code>, <code><a href="../../utility/forward.html">forward</a>&lt;M&gt;(obj)</code> から <code>map</code> に直接構築可能であること</li>
254277
</ul>
255278
<p>なお、規格に記載はないが、<code>hint</code><code><a href="emplace_hint.html">emplace_hint</a></code> と同様、コンテナの有効な読み取り専用イテレータである必要があるものと思われる。</p>
256279
<h2>効果</h2>
257280
<ul>
258-
<li>(1)、(3) : <code>map</code><code>k</code> と同値のキーを持つ要素 <code>e</code> を持っている場合、<code>e.second</code><code><a href="../../utility/forward.html">forward</a>&lt;M&gt;(obj)</code> を代入する。そうでなければ、<code>k</code>, <code><a href="../../utility/forward.html">forward</a>&lt;M&gt;(obj)</code> から構築した <code>value_type</code> 型のオブジェクトを挿入する。</li>
281+
<li>(1)、(3)、(5)、(6) : <code>map</code><code>k</code> と同値のキーを持つ要素 <code>e</code> を持っている場合、<code>e.second</code><code><a href="../../utility/forward.html">forward</a>&lt;M&gt;(obj)</code> を代入する。そうでなければ、<code>k</code>, <code><a href="../../utility/forward.html">forward</a>&lt;M&gt;(obj)</code> から構築した <code>value_type</code> 型のオブジェクトを挿入する。</li>
259282
<li>(2)、(4) : <code>map</code><code>k</code> と同値のキーを持つ要素 <code>e</code> を持っている場合、<code>e.second</code><code><a href="../../utility/forward.html">forward</a>&lt;M&gt;(obj)</code> を代入する。そうでなければ、<code><a href="../../utility/move.html">move</a>(k)</code>, <code><a href="../../utility/forward.html">forward</a>&lt;M&gt;(obj)</code> から構築した <code>value_type</code> 型のオブジェクトを挿入する。</li>
260283
</ul>
261284
<h2><a class="cpprefjp-defined-word" data-desc="関数呼び出し式の評価結果となるオブジェクト・値">戻り値</a></h2>
262285
<ul>
263-
<li>(1)、(2) : イテレータと <code>bool</code> 値の <code><a href="../../utility/pair.html">pair</a></code> を返す。<ul>
286+
<li>(1)、(2)、(5) : イテレータと <code>bool</code> 値の <code><a href="../../utility/pair.html">pair</a></code> を返す。<ul>
264287
<li>挿入された場合には、<code>first</code> に挿入された要素へのイテレータ、<code>second</code><code>true</code> が設定される。</li>
265288
<li>代入された場合には、<code>first</code> に代入された要素へのイテレータ、<code>second</code><code>false</code> が設定される。</li>
266289
</ul>
267290
</li>
268-
<li>(3)、(4) :<ul>
291+
<li>(3)、(4)、(6) :<ul>
269292
<li>挿入された場合には、挿入された要素へのイテレータを返す。</li>
270293
<li>代入された場合には、代入された要素へのイテレータを返す。</li>
271294
</ul>
272295
</li>
273296
</ul>
274297
<h2><a class="cpprefjp-defined-word" data-desc="関数等の意味論を構成する要素の1つ。Complexity。関数が使うアルゴリズムの空間計算量・時間計算量">計算量</a></h2>
275298
<ul>
276-
<li>(1)、(2) : <code><a href="emplace.html">emplace</a></code> と同じ。</li>
277-
<li>(3)、(4) : <code><a href="emplace_hint.html">emplace_hint</a></code> と同じ。</li>
299+
<li>(1)、(2)、(5) : <code><a href="emplace.html">emplace</a></code> と同じ。</li>
300+
<li>(3)、(4)、(6) : <code><a href="emplace_hint.html">emplace_hint</a></code> と同じ。</li>
278301
</ul>
279302
<h2>備考</h2>
280-
<p>このメンバ関数の機能テストマクロは以下の通り。</p>
281-
<table border="1" bordercolor="#888" style="border-collapse:collapse">
282-
<thead>
283-
<tr>
284-
<th>マクロ名</th>
285-
<th></th>
286-
</tr>
287-
</thead>
288-
<tbody>
289-
<tr>
290-
<td><code>__cpp_lib_map_try_emplace</code></td>
291-
<td><code>201411</code></td>
292-
</tr>
293-
</tbody>
294-
</table>
303+
<ul>
304+
<li>(5), (6) :<ul>
305+
<li><code>is_transparent</code>は、標準ライブラリの<code><a href="../../functional/less.html">std::less</a></code><code><a href="../../functional/greater.html">std::greater</a></code>といった関数オブジェクトの、<code>void</code>に対する特殊化で定義される。それ以外のテンプレートパラメータで<code>is_transparent</code>が定義されないのは、互換性のためである。</li>
306+
<li>これらの<a class="cpprefjp-defined-word" data-desc="同名の関数を異なる引数・テンプレート・制約などで複数定義すること。または同名の関数の集合">オーバーロード</a>は、<code>map&lt;string, int&gt;</code>のようなコンテナに対し、検索操作で文字列リテラルを渡した際に、キー型の一時オブジェクトが生成されるコストを減らすためにある。</li>
307+
</ul>
308+
</li>
309+
</ul>
295310
<h2></h2>
296311
<p><div class="yata" id="4dbbb4585dddec7bf9637a2ee62d1672861313c1"><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>
297312
<span class="cp">#include</span> <span class="cpf"><a href="../../map.html">&lt;map&gt;</a></span><span class="cp"></span>
@@ -358,6 +373,10 @@ <h2>参照</h2>
358373
<li><a href="http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2014/n4006.html" target="_blank">N4006 An improved emplace() for unique-key maps</a></li>
359374
<li><a href="http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2014/n4240.html" target="_blank">N4240 Improved insertion interface for unique-key maps (Revision 2)</a></li>
360375
<li><a href="http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2014/n4279.html" target="_blank">N4279 Improved insertion interface for unique-key maps (Revision 2.3)</a></li>
376+
<li><a href="http://open-std.org/jtc1/sc22/wg21/docs/papers/2023/p2363r5.html" target="_blank">P2363R5 Extending associative containers with the remaining heterogeneous overloads</a><ul>
377+
<li>C++26で<code>template &lt;class K&gt;</code>のバージョンが追加された</li>
378+
</ul>
379+
</li>
361380
</ul></div>
362381

363382
</div>

0 commit comments

Comments
 (0)