J'ai donc une liste:
list<Object> myList;
myList.push_back(Object myObject);
Je ne suis pas sûr mais je suis convaincu que ce serait le "0ème" élément du tableau. Y a-t-il une fonction que je peux utiliser qui renverra "myObject"?
Object copy = myList.find_element(0);
?
vector
place?front()
.Réponses:
Si vous avez fréquemment besoin d'accéder au Nième élément d'une séquence,
std::list
qui est implémenté sous la forme d'une liste doublement chaînée, n'est probablement pas le bon choix.std::vector
oustd::deque
serait probablement mieux.Cela dit, vous pouvez obtenir un itérateur vers le Nième élément en utilisant
std::advance
:Pour un conteneur qui ne fournit pas d'accès aléatoire, comme
std::list
,std::advance
appelleoperator++
lesN
heures d' itérateur . Sinon, si votre implémentation de bibliothèque standard le fournit, vous pouvez appelerstd::next
:std::next
is encapsule efficacement un appel àstd::advance
, ce qui facilite l'avance d'un itérateurN
avec moins de lignes de code et moins de variables mutables.std::next
a été ajouté dans C ++ 11.la source
std::advance
oustd::next
, il est facile d'appeler UB. Il n'y a pas de vérification des limites.std::list
ne fournit aucune fonction pour obtenir un élément avec un index. Vous pouvez essayer de l'obtenir en écrivant du code, ce que je ne recommanderais pas, car ce serait inefficace si vous devez le faire fréquemment.Qu'est - ce que vous avez besoin est:
std::vector
. Utilisez-le comme:la source
la source
Peut-être pas le moyen le plus efficace. Mais vous pouvez convertir la liste en vecteur.
Accédez ensuite au vecteur à l'aide de l'opérateur [x].
Vous pouvez mettre cela dans une fonction d'assistance:
Ensuite, utilisez la fonction d'assistance comme ceci:
la source