¿Cuál es la forma más elegante de realizar un ciclo y parar después del penúltimo elemento (en C++ 11)?Detener en los iteradores del último elemento C++
Nota: me refiero a los iteradores bidireccionales; los iteradores de acceso aleatorio son un caso especial trivial, por supuesto, porque tienen operadores +
y -
.
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;
}
¿Estás seguro de que no querías decir "iteradores directos" en lugar de "iteradores bidireccionales"? El caso bidireccional parece bastante trivial también. –
@LucTouraille 'std :: list' proporciona iteradores bidireccionales, así que me parece bien. ¿Puedes mostrar la solución trivial en la que estás pensando? – user
Si 'while (iter! = X.end() - 1)' es trivial para usted, entonces 'while (iter! = --x.end())' también debería ser bastante directo, ¿no? –