在以下代码中,
std::map<Key,Int>::iterator p;
p = randomTable[chunk].find(value);
if (p != randomTable[chunk].end()) {
} else {
}
p != randomTable[chunk].end()
如何运作?
对于randomTable中不是最后一个(end()
)元素的所有元素,这是否意味着什么?
答案 0 :(得分:5)
find(value)将返回与end()相同的值。因此,如果值在地图中,您将进入“if”分支,如果没有,您将进入“else”分支。
end()实际上不是地图的成员 - 它指向“结束后的元素”。这是一个有点奇怪的想法,但它可能有助于认为搜索已经查看了地图中的所有元素,但未能找到您正在寻找的元素。
答案 1 :(得分:3)
没有。在std::map<K, V>::find
的文档中,您可以看到:
返回值
如果找到指定的键值,则为元素的迭代器;如果在容器中未找到指定的键,则为map :: end。
所以,if
语句只是检查你确实发现了什么。