2011-06-20 8 views
1

p != randomTable[chunk].end()作品をどのよう質問は `以下のコードで

std::map<Key,Int>::iterator p; 
p = randomTable[chunk].find(value); 
if (p != randomTable[chunk].end()) { 

} else { 

} 

をmap`?

これは、最後の(end())要素ではないrandomTableのすべての要素についてですか?

答えて

5

値がマップにない場合、find(value)はend()と同じ結果を返します。したがって、値がマップ内にあれば、 "if"ブランチに入り、そうでなければ "else"ブランチに入ります。

end()は実際にマップのメンバーではなく、「終了後の要素」を指します。これはちょっと奇妙な考えですが、検索で地図のすべての要素を見て、探している要素を見つけることができなかったと考えるのがおそらく役立ちます。

3

std::map<K, V>::findのドキュメントでいいえ、あなたが見ることができます:

戻り値

要素へのイテレータ、指定されたキー値が見つかった、またはされている場合マップ::終了した場合指定されたキーがコンテナに見つかりません。

したがって、ifという文は、実際に何かを見つけたことを確認するだけです。

関連する問題