Вы не можете. Нет способа проверить это. Вы должны структурировать свой код так, чтобы ваш итератор находился между list.begin () и list.end ().
Используйте итератор следующим образом:
for (std::list<int>::const_iterator it = myList.begin(); it != myList.end(); ++it)
cout << *it << " ";
Невозможно сравнить [ EDIT ] списка итераторов с реляционными операторами (<,>, <=,> =), поэтому, когда вы используете итератор вне цикла for, вы всегда должны проверять если вы выходите за пределы, сравнивая метод begin () (если вы идете назад с --it) или с end () (если вы идете вперед с ++ it).
std::list<int>::const_iterator it = ... // initialized with some CORRECT value
// going backward
while (true)
{
cout << *it;
if (it == list.begin())
break;
--it;
}
// going forward
while (true)
{
cout << *it;
++it;
if (it == list.end())
break;
}
// or simplier
while (it != list.end())
{
cout << *it;
++it;
}
Если по какой-то причине вам действительно нужна проверка, вы можете перебрать список и проверить, равен ли какой-либо из итераторов вашему. Но это может оказать значительное влияние на производительность, поэтому используйте его только в отладке и / или в тестах.