200
200
201
201
< p class ="text-right "> < small >
202
202
最終更新日時(UTC):
203
- < span itemprop ="datePublished " content ="2025-05-22T06:56:38 ">
204
- 2025年05月22日 06時56分38秒
203
+ < span itemprop ="datePublished " content ="2025-05-22T07:04:22 ">
204
+ 2025年05月22日 07時04分22秒
205
205
</ span >
206
206
< br />
207
207
< span itemprop ="author " itemscope itemtype ="http://schema.org/Person ">
@@ -254,22 +254,26 @@ <h2>概要</h2>
254
254
</ ul >
255
255
< h2 > < a class ="cpprefjp-defined-word " data-desc ="関数等の意味論を構成する要素の1つ。Mandates。満たさなければプログラムが不適格となる要件。この要件は、オーバーロード解決によって選択された関数内での`static_assert`の定数条件式や、関数に対するdelete宣言などで表現できる "> 適格要件</ a > </ h2 >
256
256
< ul >
257
- < li > (1)、(3) : < code > value_type</ code > はコンテナに対してコピー挿入可能(CopyInsertable)でなければならない。 < ul >
258
- < li > コンテナに対してコピー挿入可能とは、< code > m</ code > をアロケータ型 < code > allocator_type</ code > の左辺値、< code > p</ code > を要素型 < code > value_type</ code > へのポインタとすると、以下の式が< a class ="cpprefjp-defined-word " data-desc ="プログラムが文法規則・診断対象の意味規則・単一定義規則を満たすこと " href ="../../../implementation-compliance.html#dfn-well-formed "> 適格</ a > (well-formed)であるということである。
259
- - < code > std::< a href ="../../memory/allocator_traits.html "> allocator_traits</ a > <allocator_type>::< a href ="../../memory/allocator_traits/construct.html "> construct</ a > (m, p, v);</ code > </ li >
257
+ < li > (1)、(3) : < code > value_type</ code > はコンテナに対してコピー挿入可能(CopyInsertable)でなければならない。< ul >
258
+ < li > コンテナに対してコピー挿入可能とは、< code > m</ code > をアロケータ型 < code > allocator_type</ code > の左辺値、< code > p</ code > を要素型 < code > value_type</ code > へのポインタとすると、以下の式が< a class ="cpprefjp-defined-word " data-desc ="プログラムが文法規則・診断対象の意味規則・単一定義規則を満たすこと " href ="../../../implementation-compliance.html#dfn-well-formed "> 適格</ a > (well-formed)であるということである。< ul >
259
+ < li > < code > std::< a href ="../../memory/allocator_traits.html "> allocator_traits</ a > <allocator_type>::< a href ="../../memory/allocator_traits/construct.html "> construct</ a > (m, p, v);</ code > </ li >
260
260
</ ul >
261
261
</ li >
262
- < li > (2)、(4) : < code > value_type</ code > はコンテナに対してムーブ挿入可能(MoveInsertable)でなければならない。 < ul >
263
- < li > コンテナに対してムーブ挿入可能とは、< code > m</ code > をアロケータ型 < code > allocator_type</ code > の左辺値、< code > p</ code > を要素型 < code > value_type</ code > へのポインタとすると、以下の式が< a class ="cpprefjp-defined-word " data-desc ="プログラムが文法規則・診断対象の意味規則・単一定義規則を満たすこと " href ="../../../implementation-compliance.html#dfn-well-formed "> 適格</ a > (well-formed)であるということである。
264
- - < code > std::< a href ="../../memory/allocator_traits.html "> allocator_traits</ a > <allocator_type>::< a href ="../../memory/allocator_traits/construct.html "> construct</ a > (m, p, std::< a href ="../../utility/move.html "> move</ a > (rv));</ code > </ li >
265
262
</ ul >
266
263
</ li >
267
- < li > (3)、(4) : 引数 < code > position</ code > は、コンテナの有効な読み取り専用イテレータでなければならない。 < ul >
264
+ < li > (2)、(4) : < code > value_type</ code > はコンテナに対してムーブ挿入可能(MoveInsertable)でなければならない。< ul >
265
+ < li > コンテナに対してムーブ挿入可能とは、< code > m</ code > をアロケータ型 < code > allocator_type</ code > の左辺値、< code > p</ code > を要素型 < code > value_type</ code > へのポインタとすると、以下の式が< a class ="cpprefjp-defined-word " data-desc ="プログラムが文法規則・診断対象の意味規則・単一定義規則を満たすこと " href ="../../../implementation-compliance.html#dfn-well-formed "> 適格</ a > (well-formed)であるということである。< ul >
266
+ < li > < code > std::< a href ="../../memory/allocator_traits.html "> allocator_traits</ a > <allocator_type>::< a href ="../../memory/allocator_traits/construct.html "> construct</ a > (m, p, std::< a href ="../../utility/move.html "> move</ a > (rv));</ code > </ li >
267
+ </ ul >
268
+ </ li >
269
+ </ ul >
270
+ </ li >
271
+ < li > (3)、(4) : 引数 < code > position</ code > は、コンテナの有効な読み取り専用イテレータでなければならない。< ul >
268
272
< li > なお、標準では間接参照可能(dereferenceable)である必要があることになっているが、その必要はない(つまり、最終要素の次を指すイテレータでも良い)ものと思われる。</ li >
269
273
</ ul >
270
274
</ li >
271
- < li > (5) : 引数 < code > first</ code > 、および、< code > last</ code > は、入力イテレータの要件を満たし、かつ、< a class ="cpprefjp-defined-word " data-desc ="2つのイテレータで表現される半開区間を表す。C++20からイテレータと番兵で異なる型であっても指定可能になる "> イテレータ範囲</ a > < code > [first, last)</ code > が当該コンテナ< strong > 以外を指す</ strong > 有効な範囲でなければならない。 < ul >
272
- < li > また、このコンテナの要素型 < code > value_type</ code > は、コンテナに対して < code > *first</ code > から直接構築可能(EmplaceConstructible)でなければならない。 </ li >
275
+ < li > (5) : 引数 < code > first</ code > 、および、< code > last</ code > は、入力イテレータの要件を満たし、かつ、< a class ="cpprefjp-defined-word " data-desc ="2つのイテレータで表現される半開区間を表す。C++20からイテレータと番兵で異なる型であっても指定可能になる "> イテレータ範囲</ a > < code > [first, last)</ code > が当該コンテナ< strong > 以外を指す</ strong > 有効な範囲でなければならない。< ul >
276
+ < li > また、このコンテナの要素型 < code > value_type</ code > は、コンテナに対して < code > *first</ code > から直接構築可能(EmplaceConstructible)でなければならない。</ li >
273
277
< li > ここで、コンテナに対して < code > *first</ code > から直接構築可能とは、< code > m</ code > をアロケータ型 < code > allocator_type</ code > の左辺値、< code > p</ code > を要素型 < code > value_type</ code > へのポインタとすると、以下の式が< a class ="cpprefjp-defined-word " data-desc ="プログラムが文法規則・診断対象の意味規則・単一定義規則を満たすこと " href ="../../../implementation-compliance.html#dfn-well-formed "> 適格</ a > (well-formed)であるということである。< ul >
274
278
< li > < code > std::< a href ="../../memory/allocator_traits.html "> allocator_traits</ a > <allocator_type>::< a href ="../../memory/allocator_traits/construct.html "> construct</ a > (m, p, *first);</ code > </ li >
275
279
</ ul >
@@ -286,7 +290,7 @@ <h2><a class="cpprefjp-defined-word" data-desc="関数等の意味論を構成
286
290
< h2 > 効果</ h2 >
287
291
< ul >
288
292
< li > (1)、(2) : 引数 < code > v</ code > 、あるいは < code > rv</ code > で指定した値と等価なキーがコンテナに存在していなければ、当該要素を追加する。</ li >
289
- < li > (3)、(4) : 引数 < code > v</ code > 、あるいは < code > rv</ code > で指定した値と等価なキーがコンテナに存在していなければ、当該要素を追加する。 < ul >
293
+ < li > (3)、(4) : 引数 < code > v</ code > 、あるいは < code > rv</ code > で指定した値と等価なキーがコンテナに存在していなければ、当該要素を追加する。< ul >
290
294
< li > 引数 < code > position</ code > は、要素の挿入位置を探し始める場所のヒントとして使用されるが、実装によって無視されるかもしれない。</ li >
291
295
</ ul >
292
296
</ li >
@@ -300,12 +304,14 @@ <h2>効果</h2>
300
304
</ ul >
301
305
< h2 > < a class ="cpprefjp-defined-word " data-desc ="関数呼び出し式の評価結果となるオブジェクト・値 "> 戻り値</ a > </ h2 >
302
306
< ul >
303
- < li > (1)、(2) : < code > < a href ="../../utility/pair.html "> pair</ a > </ code > の < code > bool</ code > 部分(< code > second</ code > 部)は、要素が追加されたら < code > true</ code > 、追加されなかったら(既にあったら)< code > false</ code > 。 < ul >
307
+ < li > (1)、(2) : < code > < a href ="../../utility/pair.html "> pair</ a > </ code > の < code > bool</ code > 部分(< code > second</ code > 部)は、要素が追加されたら < code > true</ code > 、追加されなかったら(既にあったら)< code > false</ code > 。< ul >
304
308
< li > < code > < a href ="../../utility/pair.html "> pair</ a > </ code > の < code > iterator</ code > 部分(< code > first</ code > 部)は、追加された要素(< code > bool</ code > 部分が < code > true</ code > の場合)、あるいは、既にあった要素(< code > bool</ code > 部分が < code > false</ code > の場合)を指すイテレータ。</ li >
305
309
</ ul >
306
310
</ li >
307
- < li > (3)、(4) : 新たな要素が追加された場合、その追加された要素を指すイテレータ。< br />
308
- 新たな要素が追加されなかった場合、既にあった要素を指すイテレータ。</ li >
311
+ < li > (3)、(4) : 新たな要素が追加された場合、その追加された要素を指すイテレータ。< ul >
312
+ < li > 新たな要素が追加されなかった場合、既にあった要素を指すイテレータ。</ li >
313
+ </ ul >
314
+ </ li >
309
315
< li > (5) : なし</ li >
310
316
< li > (6) : なし</ li >
311
317
< li > (7) : < a class ="cpprefjp-defined-word " data-desc ="関数呼び出し式の評価結果となるオブジェクト・値 "> 戻り値</ a > としては、< code > < a href ="../../map/map.html "> insert_return_type</ a > </ code > を返す。< code > insert_return_type</ code > のイテレータ型メンバ変数< code > position</ code > 、< code > bool</ code > 型メンバ変数< code > inserted</ code > に格納される値は(1), (2)のものと同じ情報である。< code > nh</ code > が空の場合は、< code > position</ code > は終端イテレータである。< code > node_type</ code > 型メンバ変数< code > node</ code > には、< ul >
@@ -327,10 +333,12 @@ <h2><a class="cpprefjp-defined-word" data-desc="関数等の意味論を構成
327
333
</ ul >
328
334
< h2 > 備考</ h2 >
329
335
< ul >
330
- < li > これらの関数が呼ばれた後も、当該コンテナ内の要素を指す参照は無効にはならない。
331
- なお、規格書に明確な記載は無いが、当該コンテナ内の要素を指すポインタも無効にはならない。</ li >
332
- < li > これらの関数が呼ばれた後も、呼び出しの前後でこのコンテナのバケット数(< code > < a href ="bucket_count.html "> bucket_count</ a > ()</ code > の< a class ="cpprefjp-defined-word " data-desc ="関数呼び出し式の評価結果となるオブジェクト・値 "> 戻り値</ a > )が変わらなかった場合には当該コンテナを指すイテレータは無効にはならない。 < ul >
333
- < li > それ以外の場合は、当該コンテナを指すイテレータは無効になる可能性がある。 </ li >
336
+ < li > これらの関数が呼ばれた後も、当該コンテナ内の要素を指す参照は無効にはならない。< ul >
337
+ < li > なお、規格書に明確な記載は無いが、当該コンテナ内の要素を指すポインタも無効にはならない。</ li >
338
+ </ ul >
339
+ </ li >
340
+ < li > これらの関数が呼ばれた後も、呼び出しの前後でこのコンテナのバケット数(< code > < a href ="bucket_count.html "> bucket_count</ a > ()</ code > の< a class ="cpprefjp-defined-word " data-desc ="関数呼び出し式の評価結果となるオブジェクト・値 "> 戻り値</ a > )が変わらなかった場合には当該コンテナを指すイテレータは無効にはならない。< ul >
341
+ < li > それ以外の場合は、当該コンテナを指すイテレータは無効になる可能性がある。</ li >
334
342
< li > コンテナのバケット数が変わらない場合とは、以下のいずれかである:< ul >
335
343
< li > 追加しようとした要素と等価なキーの要素が全て既にコンテナに存在したため、要素が追加されなかった。</ li >
336
344
< li > 要素追加後の要素数が、要素追加前のバケット数(< code > < a href ="bucket_count.html "> bucket_count</ a > ()</ code > の< a class ="cpprefjp-defined-word " data-desc ="関数呼び出し式の評価結果となるオブジェクト・値 "> 戻り値</ a > )×最大負荷率(< code > < a href ="max_load_factor.html "> max_load_factor</ a > ()</ code > の< a class ="cpprefjp-defined-word " data-desc ="関数呼び出し式の評価結果となるオブジェクト・値 "> 戻り値</ a > )よりも小さかった。</ li >
0 commit comments