Skip to content

Commit

Permalink
map/setのerase : 範囲外のイテレータや存在しないキーが指定された場合の動作が未定義であることを記載
Browse files Browse the repository at this point in the history
  • Loading branch information
faithandbrave committed Jun 19, 2023
1 parent c46ebf4 commit 587bd5b
Show file tree
Hide file tree
Showing 4 changed files with 21 additions and 1 deletion.
7 changes: 6 additions & 1 deletion reference/map/map/erase.md
Expand Up @@ -19,6 +19,10 @@ iterator erase(const_iterator first, const_iterator last); // (3) C++11
これは削除された要素の数だけコンテナの `size` を減らし、それぞれの要素のデストラクタを呼び出す。
- (1) : 指定されたイテレータが指す要素を削除する
- (2) : 指定されたキーをもつ要素を削除する
- (3) : 指定されたイテレータ範囲の要素をすべて削除する
## パラメータ
- `position` : `map` から削除する単一要素を指すイテレータ。`iterator` はメンバ型であり、双方向イテレータとして定義される。
Expand All @@ -40,7 +44,8 @@ iterator erase(const_iterator first, const_iterator last); // (3) C++11
## 備考
- 削除された要素を指すイテレータ、および、参照のみ無効になる。なお、規格書に明確な記載は無いが、削除された要素を指すポインタも無効になる。
- この関数に、範囲外のイテレータ (終端イテレータを含む) や存在しないキーを指定した場合の動作は未定義
- 削除された要素を指すイテレータ、および、参照のみ無効になる。なお、規格書に明確な記載は無いが、削除された要素を指すポインタも無効になる
- ループ中で `map` の要素を削除するためには、C++03 までは以下のようなコードを書く必要があった。
```cpp
while (it != map_object.end()) {
Expand Down
5 changes: 5 additions & 0 deletions reference/map/multimap/erase.md
Expand Up @@ -20,6 +20,10 @@ iterator erase(const_iterator first, const_iterator last); // (3) C++11
これは削除された要素の数だけコンテナの `size` を減らし、それぞれの要素のデストラクタを呼び出す。
- (1) : 指定されたイテレータが指す要素を削除する
- (2) : 指定されたキーをもつ要素をすべて削除する
- (3) : 指定されたイテレータ範囲の要素をすべて削除する
## パラメータ
- `position` : `multimap` から削除する単一要素を指すイテレータ。`iterator` はメンバ型であり、双方向イテレータとして定義される。
Expand All @@ -41,6 +45,7 @@ iterator erase(const_iterator first, const_iterator last); // (3) C++11
## 備考
- この関数に、範囲外のイテレータ (終端イテレータを含む) や存在しないキーを指定した場合の動作は未定義
- 削除された要素を指すイテレータ、および、参照のみ無効になる。なお、規格書に明確な記載は無いが、削除された要素を指すポインタも無効になる。
- ループ中で `multimap` の要素を削除するためには、C++03 までは以下のようなコードを書く必要があった。
```cpp
Expand Down
5 changes: 5 additions & 0 deletions reference/set/multiset/erase.md
Expand Up @@ -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` はメンバ型であり、双方向イテレータとして定義される。
Expand All @@ -40,6 +44,7 @@ size_type erase(const key_type& x); // (3)
## 備考
- この関数に、範囲外のイテレータ (終端イテレータを含む) や存在しないキーを指定した場合の動作は未定義
- 削除された要素を指すイテレータ、および、参照のみ無効になる。なお、規格書に明確な記載は無いが、削除された要素を指すポインタも無効になる。
- ループ中で `multiset` の要素を削除するためには、C++03 までは以下のようなコードを書く必要があった。
```cpp
Expand Down
5 changes: 5 additions & 0 deletions reference/set/set/erase.md
Expand Up @@ -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` はメンバ型であり、双方向イテレータとして定義される。
Expand All @@ -40,6 +44,7 @@ size_type erase(const key_type& x); // (3)
## 備考
- この関数に、範囲外のイテレータ (終端イテレータを含む) や存在しないキーを指定した場合の動作は未定義
- 削除された要素を指すイテレータ、および、参照のみ無効になる。なお、規格書に明確な記載は無いが、削除された要素を指すポインタも無効になる。
- ループ中で `set` の要素を削除するためには、C++03 までは以下のようなコードを書く必要があった。
```cpp
Expand Down

0 comments on commit 587bd5b

Please sign in to comment.