Последний элемент в ForEach
===========================

Есть ли в C ++ встроенный метод для определения того, на каком элементе вы находитесь в цикле foreach, или есть ли способ определить, используете ли вы последний элемент? Или я должен сделать это вручную со счетчиком?

 такого встроенного способа нет. Не может быть и для итераторов в целом, потому что итераторы не обязаны знать, что они «почти» в конце.



 как насчет использования другого итератора для его сохранения до перехода к следующему элементу в контейнере? Если вы установите оба в начало и затем в конце цикла, прежде чем получите следующий элемент (увеличьте или уменьшите итератор), установите последний итератор на текущий, а затем получите следующий.

Что-то вроде этого:

Таким образом, вам не нужно переписывать ваш цикл, но вам нужно проверить, чтобы убедиться, что ваш контейнер не пуст перед этим.