Если вы не знакомы с контейнерами STL, думайте об итераторе end () как о символе '\ 0' в C-строках - они определяют, где находится конец, но фактическое значение, которое они несут, не полезно , Если вы разыменуете конечный итератор, вы получите мусор или, скорее всего, исключение.
Попробуйте это:
if (!mincost.empty())
{
//it contains atleast one 1-d vector and the 'end' iterator.
iter = mincost.end();
--iter;
//dereference iter here.
}
Как только вы освоитесь с итераторами, посмотрите на reverse_iterator. Как упоминал Эффо, они являются лучшим решением здесь.