Comment obtenir un certain élément dans une liste, compte tenu de la position?
Donc j'ai une liste:
list<Object> myList;
myList.push_back(Object myObject);
Je ne suis pas sûr, mais je suis persuadé que ce serait le "0e" élément dans le tableau.
Est-il une fonction que je peux utiliser sera de retour "monobjet"?
Object copy = myList.find_element(0);
?
- Il n'y a pas de tableau -- c'est une liste. Si vous voulez index en entier, pourquoi n'utilisez-vous pas
vector
à la place? - Si vous souhaitez toujours l'élément 0, utiliser
front()
. - Je n'ai pas testé, mais je suppose myList.avant() + num pourrait fonctionner ici
- non, il n'est pas
InformationsquelleAutor Test | 2011-04-20
Vous devez vous connecter pour publier un commentaire.
Si vous avez souvent besoin d'accéder à la 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 n-ième élément à l'aide de
std::advance
:Pour un conteneur qui ne fournit pas d'accès aléatoire, comme
std::list
,std::advance
appelsoperator++
sur l'itérateurN
fois. Alternativement, si votre Bibliothèque Standard de mise en œuvre fournit à elle, vous pouvez appelerstd::next
:std::next
est efficacement encapsule un appel àstd::advance
, le rendant plus facile d'avancer un itérateurN
fois avec moins de lignes de code et moins variables mutables.std::next
a été ajouté en C++11.std::advance
oustd::next
, il est facile d'invoquer l'UB. Il n'y a pas de vérification des limites.std::list
ne fournit pas de fonction permettant d'obtenir élément donné un indice. Vous pouvez essayer de l'obtenir en écrivant du code, je ne vous le recommande pas, parce que ce serait inefficace si vous avez souvent besoin de le faire.Ce que vous avez besoin est :
std::vector
. Utiliser comme:Peut-être pas la manière la plus efficace. Mais vous pouvez convertir la liste dans un vecteur.
Alors accès du vecteur à l'aide de [x] l'opérateur.
Vous placer dans une fonction d'assistance:
Ensuite utiliser l'aide d'une fonction comme ceci: