質問編集履歴
1
補足的に修正
title
CHANGED
File without changes
|
body
CHANGED
@@ -1,5 +1,7 @@
|
|
1
|
+
(書き漏らしがあったので、質問文を補足的に修正してます。)
|
2
|
+
|
1
3
|
例えば、mapに登録されているかどうかを調べるには、map::find()を使いますが、これは見つからなかった時、map::end()と同じ値を返却します。
|
2
|
-
なので、見つかったか
|
4
|
+
なので、見つかった時の処理と見つからなかった時の処理を判別するには、例えば下記のように記述することになります。
|
3
5
|
|
4
6
|
```C++
|
5
7
|
std::map<int, std::string> mMap;
|
@@ -7,6 +9,8 @@
|
|
7
9
|
auto found = mMap.find(key);
|
8
10
|
if (found == mMap.end()) {
|
9
11
|
// 見つからなかった時の処理
|
12
|
+
} else {
|
13
|
+
// 見つかった時の処理(foundを使うことが多い)
|
10
14
|
}
|
11
15
|
```
|
12
16
|
このfound == mMap.end()が嫌いです。見つからなかったという事実を確認するだけのために、mapのインスタンスが必要になるので使いにくいのです。
|
@@ -14,12 +18,14 @@
|
|
14
18
|
「何も指していない」ポインタとしてnullptrがあるように、何も指していないiteratorって、やはりないのでしょうか?
|
15
19
|
そこそこ検索してみたけど見つられなかったので、残念ながら、なさそうです。
|
16
20
|
|
17
|
-
皆さんはfind()からちょっと離れたところで、
|
21
|
+
皆さんはfind()からちょっと離れたところで、処理したい時、どのようにしていますか?
|
18
22
|
一々インスタンスをハンドリングして、そのend()と比較してますか?
|
19
23
|
not foundフラグを別途ハンドリングしてますか?
|
20
24
|
もし、下記ようにスマートに書ける方法を構築されている方がいらっしゃったら、よろしれば方法を教えて頂けないでしょうか?
|
21
25
|
```C++
|
22
26
|
if (!found) {
|
23
27
|
// 見つからなかった時の処理
|
28
|
+
} else {
|
29
|
+
// 見つかった時の処理(foundを使うことが多い)
|
24
30
|
}
|
25
31
|
```
|