关于C++ Iterator`map`的问题

use*_*594 1 c++ iterator std

在以下代码中,

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

} else {

}
Run Code Online (Sandbox Code Playgroud)

p != randomTable[chunk].end()工作原理如何?

这是否意味着,对于randomTable中不是last(end())元素的所有元素?

tho*_*att 5

如果值不在map中,find(value)将返回与end()相同的值.因此,如果值在地图中,您将进入"if"分支,如果没有,您将进入"else"分支.

end()实际上不是地图的成员 - 它指向"结束后的元素".这是一个有点奇怪的想法,但它可能有助于认为搜索已查看地图中的所有元素,但未能找到您正在寻找的元素.