Qual è il modo più elegante di eseguire un ciclo e fermarsi dopo il penultimo elemento (in C++ 11)?Stop agli ultimi iteratori dell'elemento C++
Nota: intendo per gli iteratori bidirezionali; gli iteratori ad accesso casuale sono un caso speciale banale, ovviamente, perché hanno operatori +
e -
.
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;
}
Sei sicuro di non volere dire "iteratori di inoltro" anziché "iteratori bidirezionali"? Anche il caso bidirezionale sembra piuttosto banale. –
@LucTouraille 'std :: list' fornisce iteratori bidirezionali, quindi va bene per me-- puoi mostrare la soluzione banale a cui stai pensando? – user
Se 'while (iter! = X.end() - 1)' è banale per te, allora 'while (iter! = --x.end())' dovrebbe essere abbastanza semplice, no? –