Если вы хотите проверить доступ к элементам vector
, вы можете использовать функцию at
, которая выдает исключение std::out_of_range
в случае нарушения границы. Пример:
for (std::vector<Face>::size_type i = 0;
i != face.size()+5;
++i)
{
face.at(i).f();
}
Стандарт не устанавливает никаких проверенных итераторов. Формулировка в стандарте такова, что доступ к недопустимому итератору приводит к неопределенному поведению. Но многие реализации предоставляют проверенные итераторы. Если переносимость не имеет значения, вы можете использовать один из этих проверенных итераторов. Например, в режиме отладки MSVC vector<T>::iterator
является проверенным итератором. Однако в режиме Release это просто typedef для T*