From 587bd5b265057b6b9f69895cf8c98d6c37bdd483 Mon Sep 17 00:00:00 2001 From: Akira Takahashi Date: Mon, 19 Jun 2023 15:23:45 +0900 Subject: [PATCH] =?UTF-8?q?map/set=E3=81=AEerase=20:=20=E7=AF=84=E5=9B=B2?= =?UTF-8?q?=E5=A4=96=E3=81=AE=E3=82=A4=E3=83=86=E3=83=AC=E3=83=BC=E3=82=BF?= =?UTF-8?q?=E3=82=84=E5=AD=98=E5=9C=A8=E3=81=97=E3=81=AA=E3=81=84=E3=82=AD?= =?UTF-8?q?=E3=83=BC=E3=81=8C=E6=8C=87=E5=AE=9A=E3=81=95=E3=82=8C=E3=81=9F?= =?UTF-8?q?=E5=A0=B4=E5=90=88=E3=81=AE=E5=8B=95=E4=BD=9C=E3=81=8C=E6=9C=AA?= =?UTF-8?q?=E5=AE=9A=E7=BE=A9=E3=81=A7=E3=81=82=E3=82=8B=E3=81=93=E3=81=A8?= =?UTF-8?q?=E3=82=92=E8=A8=98=E8=BC=89?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- reference/map/map/erase.md | 7 ++++++- reference/map/multimap/erase.md | 5 +++++ reference/set/multiset/erase.md | 5 +++++ reference/set/set/erase.md | 5 +++++ 4 files changed, 21 insertions(+), 1 deletion(-) diff --git a/reference/map/map/erase.md b/reference/map/map/erase.md index b0105266c8..df6cd4fe52 100644 --- a/reference/map/map/erase.md +++ b/reference/map/map/erase.md @@ -19,6 +19,10 @@ iterator erase(const_iterator first, const_iterator last); // (3) C++11 これは削除された要素の数だけコンテナの `size` を減らし、それぞれの要素のデストラクタを呼び出す。 +- (1) : 指定されたイテレータが指す要素を削除する +- (2) : 指定されたキーをもつ要素を削除する +- (3) : 指定されたイテレータ範囲の要素をすべて削除する + ## パラメータ - `position` : `map` から削除する単一要素を指すイテレータ。`iterator` はメンバ型であり、双方向イテレータとして定義される。 @@ -40,7 +44,8 @@ iterator erase(const_iterator first, const_iterator last); // (3) C++11 ## 備考 -- 削除された要素を指すイテレータ、および、参照のみ無効になる。なお、規格書に明確な記載は無いが、削除された要素を指すポインタも無効になる。 +- この関数に、範囲外のイテレータ (終端イテレータを含む) や存在しないキーを指定した場合の動作は未定義 +- 削除された要素を指すイテレータ、および、参照のみ無効になる。なお、規格書に明確な記載は無いが、削除された要素を指すポインタも無効になる - ループ中で `map` の要素を削除するためには、C++03 までは以下のようなコードを書く必要があった。 ```cpp while (it != map_object.end()) { diff --git a/reference/map/multimap/erase.md b/reference/map/multimap/erase.md index 3a5579f7fd..0c19e0a461 100644 --- a/reference/map/multimap/erase.md +++ b/reference/map/multimap/erase.md @@ -20,6 +20,10 @@ iterator erase(const_iterator first, const_iterator last); // (3) C++11 これは削除された要素の数だけコンテナの `size` を減らし、それぞれの要素のデストラクタを呼び出す。 +- (1) : 指定されたイテレータが指す要素を削除する +- (2) : 指定されたキーをもつ要素をすべて削除する +- (3) : 指定されたイテレータ範囲の要素をすべて削除する + ## パラメータ - `position` : `multimap` から削除する単一要素を指すイテレータ。`iterator` はメンバ型であり、双方向イテレータとして定義される。 @@ -41,6 +45,7 @@ iterator erase(const_iterator first, const_iterator last); // (3) C++11 ## 備考 +- この関数に、範囲外のイテレータ (終端イテレータを含む) や存在しないキーを指定した場合の動作は未定義 - 削除された要素を指すイテレータ、および、参照のみ無効になる。なお、規格書に明確な記載は無いが、削除された要素を指すポインタも無効になる。 - ループ中で `multimap` の要素を削除するためには、C++03 までは以下のようなコードを書く必要があった。 ```cpp diff --git a/reference/set/multiset/erase.md b/reference/set/multiset/erase.md index 5d22911a4b..73871bdc7e 100644 --- a/reference/set/multiset/erase.md +++ b/reference/set/multiset/erase.md @@ -19,6 +19,10 @@ size_type erase(const key_type& x); // (3) 単一要素またはイテレータ範囲`[first, last)`を `multiset` コンテナから削除する。 これは削除された要素の数だけコンテナの [`size`](size.md)`()` を減らし、それぞれの要素のデストラクタを呼び出す。 +- (1) : 指定されたイテレータが指す要素を削除する +- (2) : 指定されたキーをもつ要素をすべて削除する +- (3) : 指定されたイテレータ範囲の要素をすべて削除する + ## パラメータ - `position` : `multiset` から削除する単一要素を指すイテレータ。`iterator`、および、`const_iterator` はメンバ型であり、双方向イテレータとして定義される。 @@ -40,6 +44,7 @@ size_type erase(const key_type& x); // (3) ## 備考 +- この関数に、範囲外のイテレータ (終端イテレータを含む) や存在しないキーを指定した場合の動作は未定義 - 削除された要素を指すイテレータ、および、参照のみ無効になる。なお、規格書に明確な記載は無いが、削除された要素を指すポインタも無効になる。 - ループ中で `multiset` の要素を削除するためには、C++03 までは以下のようなコードを書く必要があった。 ```cpp diff --git a/reference/set/set/erase.md b/reference/set/set/erase.md index 7dfa75ab78..a789cada33 100644 --- a/reference/set/set/erase.md +++ b/reference/set/set/erase.md @@ -19,6 +19,10 @@ size_type erase(const key_type& x); // (3) 単一要素またはイテレータ範囲`[first, last)`を `set` コンテナから削除する。 これは削除された要素の数だけコンテナの [`size`](size.md)`()` を減らし、それぞれの要素のデストラクタを呼び出す。 +- (1) : 指定されたイテレータが指す要素を削除する +- (2) : 指定されたキーをもつ要素を削除する +- (3) : 指定されたイテレータ範囲の要素をすべて削除する + ## パラメータ - `position` : `set` から削除する単一要素を指すイテレータ。`iterator`、および、`const_iterator` はメンバ型であり、双方向イテレータとして定義される。 @@ -40,6 +44,7 @@ size_type erase(const key_type& x); // (3) ## 備考 +- この関数に、範囲外のイテレータ (終端イテレータを含む) や存在しないキーを指定した場合の動作は未定義 - 削除された要素を指すイテレータ、および、参照のみ無効になる。なお、規格書に明確な記載は無いが、削除された要素を指すポインタも無効になる。 - ループ中で `set` の要素を削除するためには、C++03 までは以下のようなコードを書く必要があった。 ```cpp