J'ai un vecteur vec de structures. Une telle structure a des éléments int a, int b, int c. Je voudrais affecter à certains int var l'élément c, de la dernière structure d'un vecteur. Pouvez-vous me fournir cette solution simple? Je fais le tour en ligne comme ceci:
var = vec.end().c;
La réponse immédiate à votre question concernant la récupération de l'accès au dernier élément d'un vecteur peut être accomplie en utilisant le membre back()
. Tel que:
int var = vec.back().c;
Remarque: S'il existe une possibilité que votre vecteur soit vide, un tel appel à back()
provoque un comportement indéfini. Dans de tels cas, vous pouvez vérifier l'état vide de votre vecteur prior pour utiliser back()
en utilisant le membre empty()
:
if (!vec.empty())
var = vec.back().c;
Une de ces deux méthodes sera probablement applicable à vos besoins.
vec.end()
est un itérateur qui fait référence à l'emplacement après la fin dans le vecteur. En tant que tel, vous ne pouvez pas le déférer et accéder aux valeurs des membres. vec.end()
l'itérateur est toujours valide, même dans un vecteur vide (auquel cas vec.end() == vec.begin()
)
Si vous souhaitez accéder au dernier élément de votre vecteur, utilisez vec.back()
, qui renvoie une référence (et non un itérateur). Notez cependant que si le vecteur est vide, cela conduira à un comportement indéfini; très probablement un crash.
Utilisez back()
:
var = vec.back().c;
var = vec.back().c;
est ce que vous voulez.
end()
renvoie l'itérateur (pas un élément) après la fin du vecteur. back()
renvoie une référence au dernier élément. Il a également une contrepartie front()
.
Essayez ceci: var = vec.back().c;
Vous pouvez également modifier votre code comme:
var = vec.rbegin()->c;
Dans les deux versions, assurez-vous d'abord que le vecteur n'est pas vide!
Vous pouvez simplement utiliser back
car il renvoie une référence au dernier élément.var = vec.back().c
Vous pouvez utiliser la fonction std:vector<T>:back()
, par ex. vec.back().c
. Voir http://www.cplusplus.com/reference/vector/vector/back/