salut,
est il existe une liste ou map avec 3 (plus que 2) champs.
merci d'avance
salut,
est il existe une liste ou map avec 3 (plus que 2) champs.
merci d'avance
Quand tu regardes la déclaration de std::list, on peut voir la déclaration de la classe template list:La réponse est donc non, et il y a de grandes chances que ce soit pareil pour les autres conteneurs.
Code : Sélectionner tout - Visualiser dans une fenêtre à part template < class Type, class allocator=allocator<Type> > class list
Mais comme la plupart de ces conteneurs effectuent des opération de comparaison lors de l'insertion d'éléments, ça paraît logique car le code aura du mal à comparer des types différents...
Reste à faire ton propre conteneur, mais à mon avis, bon courage .
"L'ordinateur obéit à vos ordres, pas à vos intentions." [Anonyme]
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8 struct mytype { type1 t1; type2 t2; type3 t3; }; std::list<mytype> mylist;
Mieux que SDL : découvrez SFML
Mes tutoriels 2D/3D/Jeux/C++, Cours et tutoriels C++, FAQ C++, Forum C++.
Ca fonctionnera pour une list (qui ne fait pas de comparaison sur ses objets) mais pas pour une map (qui fait une comparaison sur ses objets).
Après, j'ai peut être mal compris le problème.
Est-ce une liste avec des emplacements qui contiennent 3 éléments (type1 et type2 et type3) ou une liste avec des emplacements qui peuvent contenir type1 ou type2 ou type3?
"L'ordinateur obéit à vos ordres, pas à vos intentions." [Anonyme]
et -> tuple
ou -> variant
Boost ftw
Bonjour,
Pour une map, il suffit d'ajouter un opérateur de comparaison :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18 template < typename T1, typename T2, typename T3 > struct mytype { T1 t1; T2 t2; T2 t3; bool operator <(const mytype & ref) const { if (t1 == ref.t1) { if (t2 == ref.t2) { return t3 < ref.t3; } else { return t2 < ref.t2; } } else { return t1 < ref.t1; } } }; std::map < mytype < int, int, int >, int >mymap;
Dernière modification par Spout ; 03/09/2008 à 15h42. Motif: Correction de ma bêtise que personne n'a vu (dans la citation)
Il y a boost::multi_index qui peut être intéressant dans ce genre de situations.
Ma session aux Microsoft TechDays 2013 : Développer en natif avec C++11.
Celle des Microsoft TechDays 2014 : Bonnes pratiques pour apprivoiser le C++11 avec Visual C++
Et celle des Microsoft TechDays 2015 : Visual C++ 2015 : voyage à la découverte d'un nouveau monde
Je donne des formations au C++ en entreprise, n'hésitez pas à me contacter.
Vous avez un bloqueur de publicités installé.
Le Club Developpez.com n'affiche que des publicités IT, discrètes et non intrusives.
Afin que nous puissions continuer à vous fournir gratuitement du contenu de qualité, merci de nous soutenir en désactivant votre bloqueur de publicités sur Developpez.com.
Partager