c++ vecteur dernier élément champ
J'ai un vecteur , vec de structures. Une telle structure a des éléments de int a, int b, int c. Je voudrais attribuer à certains int var l'élément c, de la dernière structure dans un vecteur. Pouvez-vous me fournir cette solution simple? Je vais faire la queue comme ceci:
var = vec.end().c;
7 réponses
La réponse immédiate à votre question sur l'accès au dernier élément d'un vecteur peut être accomplie en utilisant le membre back()
. Tels que:
int var = vec.back().c;
Remarque: s'il est possible 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 avant d'utiliser back()
en utilisant le Membre empty()
:
if (!vec.empty())
var = vec.back().c;
Probablement l'une de ces deux méthodes sera applicable pour 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 voulez 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 plantage.
var = vec.back().c;
c'est ce que tu veux.
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 aussi 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
comme elle renvoie une référence au dernier élément.var = vec.back().c
Vous pouvez utiliser la fonction std:vector<T>:back()
, par exemple vec.back().c
.
Voir http://www.cplusplus.com/reference/vector/vector/back/