При выполнении итерации по std::map
или std::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
, что похоже на статический член string::npos
.В чем может быть причина принятия решения о предоставлении .end()
на основе переменных, а не на основе типов контейнеров?(то есть map<int,int>::end
и map<int,double>::end
будут отличаться; но для каждой переменной map<int,int>
, ::end
будет аналогичным.)