Je voudrais placer les trois dernières valeurs du vecteur v_2 en trois variables (une valeur par variable). Existe-t-il un moyen plus rapide ou plus simple de faire cela?Comment retourner les trois dernières valeurs d'un vecteur?
struct Desempenho {
double maximo;
};
double ultimo, penultimo, antepenultimo;
Desempenho d;
int n (0);
vector<Desempenho> v_2;
d.maximo=1.1;
v_2.push_back(d);
d.maximo=2.2;
v_2.push_back(d);
d.maximo=3.3;
v_2.push_back(d);
d.maximo=4.4;
v_2.push_back(d);
d.maximo=5.5;
v_2.push_back(d);
for (vector<Desempenho>::const_reverse_iterator rit = v_2.rbegin(); rit != v_2.rend(); ++rit) {
cout << "XXXX " << n << endl;
if (n==0) ultimo = rit->maximo;
else if (n==1) penultimo = rit->maximo;
else if (n==2) antepenultimo = rit->maximo;
else break;
++n;
}
cout << ultimo << " " << penultimo << " " << antepenultimo < < endl;
Ceci déclenche une exception si le vecteur est trop petit, alors que le code original imprime un objet initialisé par défaut. Ou dans cet exemple, un objet non initialisé, mais je supposais que c'était un accident :-) –
Oui, mais cela pourrait être surmonté tout simplement. –