J'ai pris un std::list pour avoir une liste modulable(suppression, ajout, réorganisation ) d'une classe mais je ne sais pas comment accéder à l'élément X de la liste.
Pour les vectors il suffit de faire vect[x] pour accéder à un élément mais comment faire avec une liste ?
Et je voie pas comment y arriver avec l'iterator.
std::list< int > liste;
liste.push_back(5);
std::cout<<liste[0]; // <= MARCHE APS
std::list< int >::iterator i;
i = liste.begin();
std::cout<<*i;
Avec l'iterateur, ça devrait pas poser de problème, ton code (dans le []) fonctionne : http://ideone.com/H22Go9
Par contre, ne définis pas ton itérateur sur 2 lignes, utilise l'initialisation par un initilizer-list si tu peux (+ const si tu peux également), utilise auto :
std::list< int > const liste = { 5 };
auto i = liste.begin();
std::cout << *i;
c'est pour ça qu'il y a std::advance et que ça devrait être utilisé au max, si l'opérateur + est définit pour le type d'itérateur sur lequel on l'utilise, il le fait, sinon il parcours avec un boucle.
Et comme ça ça a l'avantage non seulement d'être plus clair, mais en plus tu peux changer ton conteneur sans avoir à changer le reste de ton code.
Si tu as besoin d'avoir accès à la case 8 de ta list, alors ce n'est sans doute pas le meilleur choix possible, je vais te poser une simple question: Qu'est-ce qui fait que dans ta situation, std::list est préférable à std::vector ?
Oui, je sais lire, mais si je te posais la question c'était parce que c'était assez vague, car on peut également supprimer des éléments d'un std::vector, les échanger et le réorganiser.
La vraie question est "Qu'est-ce que tu fais le plus souvent ?", trier ton tableau ? Supprimer des éléments de celui-ci ? Ou simplement accéder de façon aléatoire à ses éléments ?
En somme: À quoi il te sert ce tableau ?
@Bacelar: Deux fois de suite ! C'est fini de me griller oui ?
Le principe n'est pas de ne pas réfléchir, c'est de faire au plus simple et au plus propre pour ce que tu as à faire, et après seulement d'optimiser quand tu peux faire des tests sur des cas concrets pour faire des mesures précises pour ne pas pourrir ton design à optimiser des trucs dans le vide.
Et pour la deuxième remarque, ça sent la conception qui sent pas bon, si tu as besoin de pointeurs sur le contenu de ton tableau, stocke directement des pointeurs dans ton tableau (intelligents de préférence bien entendu )
@epso: Ah d'accord vu comme ça je suis d'accord mais le choix d'un conteneur c'est de l'initialisation, pas de l'optimisation.
Le maçon il va pas sur son chantier et se demander ensuite quel outils utiliser. Bon mauvais exemple...Je veux dire, y'a un briefing à faire quand même non ?
En ce qui concerne mon choix je pense que j'ai y aller avec les vecteurs finalement, le lien de minirop ma bien, aidé. Merci.
Avant de poster un message, vérifiez la date du sujet dans lequel vous comptiez intervenir.
Si le dernier message sur le sujet date de plus de deux mois, mieux vaut ne pas répondre. En effet, le déterrage d'un sujet nuit au bon fonctionnement du forum, et l'informatique pouvant grandement changer en quelques mois il n'est donc que rarement pertinent de déterrer un vieux sujet.
Au lieu de déterrer un sujet il est préférable :
soit de contacter directement le membre voulu par messagerie privée en cliquant sur son pseudonyme pour accéder à sa page profil, puis sur le lien "Ecrire un message"
soit de créer un nouveau sujet décrivant votre propre contexte
ne pas répondre à un déterrage et le signaler à la modération
Je ferme ce sujet. En cas de désaccord, me contacter par MP.
Discord NaN. Mon site.
Discord NaN. Mon site.
Discord NaN. Mon site.
Mes articles | Nazara Engine | Discord NaN | Ma chaîne Twitch (programmation)
Mes articles | Nazara Engine | Discord NaN | Ma chaîne Twitch (programmation)
Discord NaN. Mon site.