Каков наиболее элегантный способ выполнения цикла и остановки после предпоследнего элемента (в C++11)?
Примечание: я имею в виду двунаправленные итераторы; итераторы с произвольным доступом, конечно, являются тривиальным частным случаем, потому что они имеют операторы +
и -
.
std::list<double> x{1,2,3,4,5,6};
for (auto iter = x.begin(); iter != x.end(); ++iter) {
auto iter2 = iter;
++iter2;
if (iter2 == x.end()) break;
std::cout << *iter << std::endl;
}