在遍历 a std::maporstd::vector或其中包含的任何容器iterator时,会检查.variable.end()而不是container<>::end. 例如,
map<int, int> var;
for(map<int, int>::iterator it = var.begin(); it != var.end(); it++)
... ^^^^^^^^^^^^^^^
上面突出显示的部分不能是这样的:
it != map<int,int>::end
这类似于 static member string::npos。.end()提供每个变量基础而不是每种类型的容器基础的设计决策背后的原因可能是什么?(即map<int,int>::end和map<int,double>::end会有所不同;但对于每个map<int,int>变量,::end将是相似的。)