(書き漏らしがあったので、質問文を補足的に修正してます。)
例えば、mapに登録されているかどうかを調べるには、map::find()を使いますが、これは見つからなかった時、map::end()と同じ値を返却します。
なので、見つかった時の処理と見つからなかった時の処理を判別するには、例えば下記のように記述することになります。
C++
1std::map<int, std::string> mMap; 2 (mMapに登録) 3auto found = mMap.find(key); 4if (found == mMap.end()) { 5 // 見つからなかった時の処理 6} else { 7 // 見つかった時の処理(foundを使うことが多い) 8}
このfound == mMap.end()が嫌いです。見つからなかったという事実を確認するだけのために、mapのインスタンスが必要になるので使いにくいのです。
「何も指していない」ポインタとしてnullptrがあるように、何も指していないiteratorって、やはりないのでしょうか?
そこそこ検索してみたけど見つられなかったので、残念ながら、なさそうです。
皆さんはfind()からちょっと離れたところで、処理したい時、どのようにしていますか?
一々インスタンスをハンドリングして、そのend()と比較してますか?
not foundフラグを別途ハンドリングしてますか?
もし、下記ようにスマートに書ける方法を構築されている方がいらっしゃったら、よろしれば方法を教えて頂けないでしょうか?
C++
1if (!found) { 2 // 見つからなかった時の処理 3} else { 4 // 見つかった時の処理(foundを使うことが多い) 5}
回答5件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2016/01/25 12:47