質問するログイン新規登録

質問編集履歴

1

補足的に修正

2016/01/25 06:53

投稿

Chironian
Chironian

スコア23274

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
  ```