Как правило, все, что может быть дорогостоящим, делается немного неуклюжим, поэтому вы не будете делать это случайно. Используя ваш пример, с контейнером, который предоставляет итераторы произвольного доступа, это будет просто container.begin()+n
, но для std::list
(который обеспечивает прямой итератор) вам нужно будет использовать list.begin()
, за которым следует advance()
.
Если вы хотите получить итератор N th , скорее всего, вам просто не следует использовать std::list
. С другой стороны, если вы начнете это предложение с "шансов", оно останется почти как истина ...