Остановка на итераторах последнего элемента C++

Каков наиболее элегантный способ выполнения цикла и остановки после предпоследнего элемента (в 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;
}
7
задан user 17 June 2012 в 18:40
поделиться