在遍历 a std::map
orstd::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
将是相似的。)