200200
201201 < p class ="text-right "> < small >
202202 最終更新日時(UTC):
203- < span itemprop ="datePublished " content ="2025-05-15T10:05 :30 ">
204- 2025年05月15日 10時05分30秒
203+ < span itemprop ="datePublished " content ="2025-05-22T05:41 :30 ">
204+ 2025年05月22日 05時41分30秒
205205 </ span >
206206 < br />
207207 < span itemprop ="author " itemscope itemtype ="http://schema.org/Person ">
233233< span class ="n "> < a href ="../../utility/pair.html "> pair</ a > </ span > < span class ="o "> <</ span > < span class ="n "> iterator</ span > < span class ="p "> ,</ span > < span class ="kt "> bool</ span > < span class ="o "> ></ span >
234234 < span class ="n "> insert_or_assign</ span > < span class ="p "> (</ span > < span class ="n "> key_type</ span > < span class ="o "> &&</ span > < span class ="n "> k</ span > < span class ="p "> ,</ span >
235235 < span class ="n "> M</ span > < span class ="o "> &&</ span > < span class ="n "> obj</ span > < span class ="p "> );</ span > < span class ="c1 "> // (2) C++17</ span >
236+ < span class ="k "> template</ span > < span class ="o "> <</ 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 "> ></ span >
237+ < span class ="n "> < a href ="../../utility/pair.html "> pair</ a > </ span > < span class ="o "> <</ span > < span class ="n "> iterator</ span > < span class ="p "> ,</ span > < span class ="kt "> bool</ span > < span class ="o "> ></ span >
238+ < span class ="n "> insert_or_assign</ span > < span class ="p "> (</ span > < span class ="n "> K</ span > < span class ="o "> &&</ span > < span class ="n "> k</ span > < span class ="p "> ,</ span >
239+ < span class ="n "> M</ span > < span class ="o "> &&</ span > < span class ="n "> obj</ span > < span class ="p "> );</ span > < span class ="c1 "> // (3) C++26</ span >
236240< span class ="k "> template</ span > < span class ="o "> <</ span > < span class ="k "> class</ span > < span class ="nc "> M</ span > < span class ="o "> ></ span >
237241< span class ="n "> iterator</ span >
238242 < 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 >
239243 < span class ="k "> const</ span > < span class ="n "> key_type</ span > < span class ="o "> &</ span > < span class ="n "> k</ span > < span class ="p "> ,</ span >
240- < span class ="n "> M</ span > < span class ="o "> &&</ span > < span class ="n "> obj</ span > < span class ="p "> );</ span > < span class ="c1 "> // (3 ) C++17</ span >
244+ < span class ="n "> M</ span > < span class ="o "> &&</ span > < span class ="n "> obj</ span > < span class ="p "> );</ span > < span class ="c1 "> // (4 ) C++17</ span >
241245< span class ="k "> template</ span > < span class ="o "> <</ span > < span class ="k "> class</ span > < span class ="nc "> M</ span > < span class ="o "> ></ span >
242246< span class ="n "> iterator</ span >
243247 < 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 >
244248 < span class ="n "> key_type</ span > < span class ="o "> &&</ span > < span class ="n "> k</ span > < span class ="p "> ,</ span >
245- < span class ="n "> M</ span > < span class ="o "> &&</ 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 "> <</ 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 "> ></ span >
248- < span class ="n "> < a href ="../../utility/pair.html "> pair</ a > </ span > < span class ="o "> <</ span > < span class ="n "> iterator</ span > < span class ="p "> ,</ span > < span class ="kt "> bool</ span > < span class ="o "> ></ span >
249- < span class ="n "> insert_or_assign</ span > < span class ="p "> (</ span > < span class ="n "> K</ span > < span class ="o "> &&</ span > < span class ="n "> k</ span > < span class ="p "> ,</ span >
250- < span class ="n "> M</ span > < span class ="o "> &&</ span > < span class ="n "> obj</ span > < span class ="p "> );</ span > < span class ="c1 "> // (5) C++26</ span >
249+ < span class ="n "> M</ span > < span class ="o "> &&</ span > < span class ="n "> obj</ span > < span class ="p "> );</ span > < span class ="c1 "> // (5) C++17</ span >
251250< span class ="k "> template</ span > < span class ="o "> <</ 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 "> ></ span >
252251< span class ="n "> iterator</ span >
253252 < 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 >
@@ -261,47 +260,47 @@ <h2>概要</h2>
261260< ul >
262261< li > (1) : < code > key_type</ code > 型のキーをとって挿入もしくは代入する</ li >
263262< li > (2) : < code > key_type</ code > 型の一時オブジェクトのキーをとって挿入もしくは代入する</ li >
264- < li > (3) : 挿入位置のヒントをともない、 < code > key_type</ code > 型のキーをとって挿入もしくは代入する</ li >
265- < li > (4) : 挿入位置のヒントをともない、< code > key_type</ code > 型の一時オブジェクトのキーをとって挿入もしくは代入する </ li >
266- < li > (5) : < code > key_type</ code > と比較可能な < code > K </ code > 型のキーをとって挿入もしくは代入する </ li >
263+ < li > (3) : < code > key_type</ code > と比較可能な < code > K </ code > 型のキーをとって挿入もしくは代入する</ li >
264+ < li > (4) : 挿入位置のヒントをともない、< code > key_type</ code > 型のキーをとって挿入もしくは代入する </ li >
265+ < li > (5) : 挿入位置のヒントをともない、 < code > key_type</ code > 型の一時オブジェクトのキーをとって挿入もしくは代入する </ li >
267266< li > (6) : 挿入位置のヒントをともない、< code > key_type</ code > と比較可能な< code > K</ code > 型のキーをとって挿入もしくは代入する</ li >
268267</ ul >
269268< h2 > < a class ="cpprefjp-defined-word " data-desc ="関数等の意味論を構成する要素の1つ。Constraints。関数であればオーバーロード解決に参加するための条件、それ以外であれば受け付ける型の条件 "> テンプレートパラメータ制約</ a > </ h2 >
270269< ul >
271- < li > (5 ), (6) : < code > key_compare::is_transparent</ code > が妥当な式であること</ li >
270+ < li > (3 ), (6) : < code > key_compare::is_transparent</ code > が妥当な式であること</ li >
272271</ ul >
273272< h2 > < a class ="cpprefjp-defined-word " data-desc ="関数等の意味論を構成する要素の1つ。Mandates。満たさなければプログラムが不適格となる要件。この要件は、オーバーロード解決によって選択された関数内での`static_assert`の定数条件式や、関数に対するdelete宣言などで表現できる "> 適格要件</ a > </ h2 >
274273< ul >
275- < li > (1)、(3)、(5 )、(6) : < code > < a href ="../../type_traits/is_assignable.html "> is_assignable_v</ a > <mapped_type&, M&&></ code > が < code > true</ code > であること。< code > value_type</ code > は、< code > k</ code > , < code > < a href ="../../utility/forward.html "> forward</ a > <M>(obj)</ code > から < code > map</ code > に直接構築可能であること</ li >
276- < li > (2)、(4 ) : < code > < a href ="../../type_traits/is_assignable.html "> is_assignable_v</ a > <mapped_type&, M&&></ 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 > <M>(obj)</ code > から < code > map</ code > に直接構築可能であること</ li >
274+ < li > (1)、(3)、(4 )、(6) : < code > < a href ="../../type_traits/is_assignable.html "> is_assignable_v</ a > <mapped_type&, M&&></ code > が < code > true</ code > であること。< code > value_type</ code > は、< code > k</ code > , < code > < a href ="../../utility/forward.html "> forward</ a > <M>(obj)</ code > から < code > map</ code > に直接構築可能であること</ li >
275+ < li > (2)、(5 ) : < code > < a href ="../../type_traits/is_assignable.html "> is_assignable_v</ a > <mapped_type&, M&&></ 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 > <M>(obj)</ code > から < code > map</ code > に直接構築可能であること</ li >
277276</ ul >
278277< p > なお、規格に記載はないが、< code > hint</ code > は < code > < a href ="emplace_hint.html "> emplace_hint</ a > </ code > と同様、コンテナの有効な読み取り専用イテレータである必要があるものと思われる。</ p >
279278< h2 > 効果</ h2 >
280279< ul >
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 > <M>(obj)</ code > を代入する。そうでなければ、< code > k</ code > , < code > < a href ="../../utility/forward.html "> forward</ a > <M>(obj)</ code > から構築した < code > value_type</ code > 型のオブジェクトを挿入する。</ li >
282- < li > (2)、(4 ) : < code > map</ code > が < code > k</ code > と同値のキーを持つ要素 < code > e</ code > を持っている場合、< code > e.second</ code > に < code > < a href ="../../utility/forward.html "> forward</ a > <M>(obj)</ code > を代入する。そうでなければ、< code > < a href ="../../utility/move.html "> move</ a > (k)</ code > , < code > < a href ="../../utility/forward.html "> forward</ a > <M>(obj)</ code > から構築した < code > value_type</ code > 型のオブジェクトを挿入する。</ li >
280+ < li > (1)、(3)、(4 )、(6) : < code > map</ code > が < code > k</ code > と同値のキーを持つ要素 < code > e</ code > を持っている場合、< code > e.second</ code > に < code > < a href ="../../utility/forward.html "> forward</ a > <M>(obj)</ code > を代入する。そうでなければ、< code > k</ code > , < code > < a href ="../../utility/forward.html "> forward</ a > <M>(obj)</ code > から構築した < code > value_type</ code > 型のオブジェクトを挿入する。</ li >
281+ < li > (2)、(5 ) : < code > map</ code > が < code > k</ code > と同値のキーを持つ要素 < code > e</ code > を持っている場合、< code > e.second</ code > に < code > < a href ="../../utility/forward.html "> forward</ a > <M>(obj)</ code > を代入する。そうでなければ、< code > < a href ="../../utility/move.html "> move</ a > (k)</ code > , < code > < a href ="../../utility/forward.html "> forward</ a > <M>(obj)</ code > から構築した < code > value_type</ code > 型のオブジェクトを挿入する。</ li >
283282</ ul >
284283< h2 > < a class ="cpprefjp-defined-word " data-desc ="関数呼び出し式の評価結果となるオブジェクト・値 "> 戻り値</ a > </ h2 >
285284< ul >
286- < li > (1)、(2)、(5 ) : イテレータと < code > bool</ code > 値の < code > < a href ="../../utility/pair.html "> pair</ a > </ code > を返す。< ul >
285+ < li > (1)、(2)、(3 ) : イテレータと < code > bool</ code > 値の < code > < a href ="../../utility/pair.html "> pair</ a > </ code > を返す。< ul >
287286< li > 挿入された場合には、< code > first</ code > に挿入された要素へのイテレータ、< code > second</ code > に < code > true</ code > が設定される。</ li >
288287< li > 代入された場合には、< code > first</ code > に代入された要素へのイテレータ、< code > second</ code > に < code > false</ code > が設定される。</ li >
289288</ ul >
290289</ li >
291- < li > (3 )、(4 )、(6) :< ul >
290+ < li > (4 )、(5 )、(6) :< ul >
292291< li > 挿入された場合には、挿入された要素へのイテレータを返す。</ li >
293292< li > 代入された場合には、代入された要素へのイテレータを返す。</ li >
294293</ ul >
295294</ li >
296295</ ul >
297296< h2 > < a class ="cpprefjp-defined-word " data-desc ="関数等の意味論を構成する要素の1つ。Complexity。関数が使うアルゴリズムの空間計算量・時間計算量 "> 計算量</ a > </ h2 >
298297< ul >
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 >
298+ < li > (1)、(2)、(3 ) : < code > < a href ="emplace.html "> emplace</ a > </ code > と同じ。</ li >
299+ < li > (4 )、(5 )、(6) : < code > < a href ="emplace_hint.html "> emplace_hint</ a > </ code > と同じ。</ li >
301300</ ul >
302301< h2 > 備考</ h2 >
303302< ul >
304- < li > (5 ), (6) :< ul >
303+ < li > (3 ), (6) :< ul >
305304< 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 >
306305< li > これらの< a class ="cpprefjp-defined-word " data-desc ="同名の関数を異なる引数・テンプレート・制約などで複数定義すること。または同名の関数の集合 "> オーバーロード</ a > は、< code > map<string, int></ code > のようなコンテナに対し、検索操作で文字列リテラルを渡した際に、キー型の一時オブジェクトが生成されるコストを減らすためにある。</ li >
307306</ ul >
0 commit comments