Вообще говоря, хорошо ли кэшировать конечный итератор (в частности, контейнеры STL) для эффективности и скорости? например, в следующем бите кода:
std::vector<int> vint;
const std::vector<int>::const_iterator end = vint.end();
std::vector<int>::iterator it = vint.begin();
while (it != end)
{
....
++it;
}
В каких условиях конечное значение будет признано недействительным? стирает с конца контейнера, чтобы быть недействительным в контейнерах STL all или только некоторые?