Разбираем «лестницу возможностей» итераторов в STL: чем отличаются
input,
forward,
bidirectional и
random-access, какие операции гарантированы (
++,
--,
+,
[], разность итераторов), почему диапазоны почти всегда задаются как
[
first
,
last
), и как выбирать универсальные инструменты вроде
std::advance вместо неверных предположений о контейнере (
vector vs
map).