|
203 | 203 | <p class="text-right"><small> |
204 | 204 | 最終更新日時: |
205 | 205 | <time itemprop="datePublished" class="js-local-time" |
206 | | - datetime="2026-08-25T12:11:17+09:00"> |
207 | | - 2026年08月25日 12時11分17秒 (JST) |
| 206 | + datetime="2026-10-09T12:31:16+09:00"> |
| 207 | + 2026年10月09日 12時31分16秒 (JST) |
208 | 208 | </time> |
209 | 209 | <br/> |
210 | 210 | <span itemprop="author" itemscope itemtype="http://schema.org/Person"> |
@@ -312,11 +312,21 @@ <h2>備考</h2> |
312 | 312 | <ul> |
313 | 313 | <li>(1) : C++17で再追加されたこの<a class="cpprefjp-defined-word" data-desc="同名の関数を異なる引数・テンプレート・制約などで複数定義すること。または同名の関数の集合">オーバーロード</a>は、それ以前の言語バージョンから使用できる可能性がある</li> |
314 | 314 | <li>(1), (2) : この関数に、範囲外のイテレータ (終端イテレータを含む) を指定した場合の<a class="cpprefjp-defined-word" data-desc="未定義の動作。処理系は予期せぬ動作をする可能性がある。要するに動作保証対象外。undefined behavior (UB)。" href="../../../implementation-compliance.html#dfn-undefined-behavior">動作は未定義</a></li> |
315 | | -<li>削除された要素を指すイテレータ、および、参照のみ無効になる。なお、規格書に明確な記載は無いが、削除された要素を指すポインタも無効になる。</li> |
316 | 315 | <li> |
317 | | -<p>ループ中で <code>multimap</code> の要素を削除するためには、C++98 までは以下のようなコードを書く必要があった。 |
| 316 | +<p>(3), (4) : 等価なキーをもつ要素が複数ある場合、そのすべてが削除される。1個だけ削除したい場合は、<code><a href="find.html">find()</a></code>メンバ関数で得たイテレータを(1), (2)に渡す |
318 | 317 | <br /> |
319 | | -<div class="codehilite"><pre><span></span><code><span class="k">while</span><span class="w"> </span><span class="p">(</span><span class="n">it</span><span class="w"> </span><span class="o">!=</span><span class="w"> </span><span class="n">map_object</span><span class="p">.</span><span class="n">end</span><span class="p">())</span><span class="w"> </span><span class="p">{</span> |
| 318 | +<div class="codehilite"><pre><span></span><code><span class="k">if</span><span class="w"> </span><span class="p">(</span><span class="k">auto</span><span class="w"> </span><span class="n">it</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">mm</span><span class="p">.</span><span class="n">find</span><span class="p">(</span><span class="n">x</span><span class="p">);</span><span class="w"> </span><span class="n">it</span><span class="w"> </span><span class="o">!=</span><span class="w"> </span><span class="n">mm</span><span class="p">.</span><span class="n">end</span><span class="p">())</span><span class="w"> </span><span class="p">{</span> |
| 319 | +<span class="w"> </span><span class="n">mm</span><span class="p">.</span><span class="n">erase</span><span class="p">(</span><span class="n">it</span><span class="p">);</span> |
| 320 | +<span class="p">}</span> |
| 321 | +</code></pre></div> |
| 322 | +</p> |
| 323 | +<ul> |
| 324 | +<li>キーを指定して削除する場合は等価なキーをもつ要素の個数に対して線形時間がかかるが、イテレータを指定して削除する場合は定数時間である</li> |
| 325 | +<li><code><a href="find.html">find()</a></code>が<code><a href="end.html">end()</a></code>を返した場合に、そのイテレータを渡すと<a class="cpprefjp-defined-word" data-desc="未定義の動作。処理系は予期せぬ動作をする可能性がある。要するに動作保証対象外。undefined behavior (UB)。" href="../../../implementation-compliance.html#dfn-undefined-behavior">動作は未定義</a>となる</li> |
| 326 | +<li>削除された要素を指すイテレータ、および、参照のみ無効になる。なお、規格書に明確な記載は無いが、削除された要素を指すポインタも無効になる。</li> |
| 327 | +<li>ループ中で <code>multimap</code> の要素を削除するためには、C++98 までは以下のようなコードを書く必要があった。</li> |
| 328 | +</ul> |
| 329 | +<p><div class="codehilite"><pre><span></span><code><span class="k">while</span><span class="w"> </span><span class="p">(</span><span class="n">it</span><span class="w"> </span><span class="o">!=</span><span class="w"> </span><span class="n">map_object</span><span class="p">.</span><span class="n">end</span><span class="p">())</span><span class="w"> </span><span class="p">{</span> |
320 | 330 | <span class="w"> </span><span class="k">if</span><span class="w"> </span><span class="p">(</span><span class="n">条件</span><span class="p">)</span><span class="w"> </span><span class="p">{</span> |
321 | 331 | <span class="w"> </span><span class="n">map_object</span><span class="p">.</span><span class="n">erase</span><span class="p">(</span><span class="n">it</span><span class="o">++</span><span class="p">);</span> |
322 | 332 | <span class="w"> </span><span class="p">}</span> |
|
0 commit comments