je sais qu'on peut utiliser des containers pour contenir certaines données (int, char, string....)
Mais peut-on utiliser des containers qui eux-mêmes contiennent des containers??
je sais qu'on peut utiliser des containers pour contenir certaines données (int, char, string....)
Mais peut-on utiliser des containers qui eux-mêmes contiennent des containers??
Bien sûr.
Boost ftw
tu le dit toi meme des conteneur contiennent des données tu va pouvoir mettre n'importe quelle objet dans un conteneur!
si tu fait une classe voiture par exemple tu peux faire un conteneur de voiture pour faire une classe garage et tu peut faire un conteneur de garage pour faire une classe concessionnaire ....
j'espere avoir été assez clair
bon courage jeremy
Rien ne se perd, rien ne se crée, tout se transforme
------- -------
Je ne contredirai pas ce qui a été dis précédement puisqu'il est possible de mettre des conteneurs dans d'autres conteneurs (un conteneur est générique, il peut donc contenir n'importe quoi) , il faut toutefois faire attention à l'écriture. Par exemple, un vecteur qui contient un autre vecteur doit s'écrire comme ceci :Mais peut-on utiliser des containers qui eux-mêmes contiennent des containers??
En n'oubliant surtout pas de mettre un espace entre le premier > et le second. Sans ceci tu auras une erreur (le compilateur reconnait l'opérateur >> à la place ...)
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2vector<vector<int> > mon_vecteur;
attention avec certains conteneurs cependant qui nécessitent certaines choses.
Par exemple, std::set nécessite que les éléments soit ordonnables, ce qui n'est
par exemple pas le cas des conteneurs non ordonnés comme hash_map.
Boost ftw
ok, merci pour toutes ces réponses.
maintenant, j'ai besoin de containers qui contiennent des listes de chiffres. Ces listes de données seraient accessibles par des numéros (1,2, 1000)
Ainsi, pour la 100 ieme liste, on aurait comme éléments: 0.2,0.33,0.01...
Pour la 30ieme; on aurait :0.332,0.499....
Quel type de containers me conseillez vous de prendre pour contenir ces listes?
J'ai peur de ne pas comprendre ce que tu veux faire (j'ai du mal à voir la suite logique sur tes listes ...). Mais sinon, ça dépend de ce que tu veux faire apprès dessus tes listes. (bêtement je pensais à un vecteur de liste ou un vecteur de vecteur ...)
Soit n listes de chiffres:
L[1]=[0.1,0.3,......,0.2]
L[2]=[0.52,0.10,....0.99]
.....
L[n]=[0.9,0.32,....,0.21]
Je veux un containers qui contiennent les listes.
Mais je pense qu'un Vector est suffisant.
Est ce que tes listes sont contigues (c'est à dire qu'après la liste 1 tu as la liste 2 puis la 3 et ainsi de suite) parce que dans ton premier post, ça n'était pas clair.
Aussi, quelles seront les opérations sur tes listes ?
>>Est ce que tes listes sont contigues.
Mes listes de chiffres seront accessibles par des numéros croissants, mais pas forcément succeffis. Par exemple, l'index de la premiere liste sera 2324, l'index de la deuxième liste: 2367......
>>Aussi, quelles seront les opérations sur tes listes ?
Dans mes listes, il se peut que j'ajoute des éléments. Mais je veux que ces elements soient uniques. Alors pour mes sous-listes, je vais prendre des SETS.
Mais la question que je me pose c'est que prendre pour ma liste de SETS?
std::map<int, std::set<double> > par exemple.
Boost ftw
ok, merci,
la question suivante n'a rien avoir avec les containers, mais je vais pas lancer un nouveau fil sur le forum. C'est sur l'arithmétique des pointeurs.
Soit le code suivant:
Réponse:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9 char p[]="EBA"; char *q = strchr(p,'B'); char *s = strchr(p,'A'); cout<<&p; cout<<&q; cout<<sizeof(p) cout<<(q-p); cout<<&s;
0x22ff74
0x22ff70
4
1
0x22ff6c
la valeur de &p est égale à 0x22ff74=2293620
la valeur de &q est égale à 0x22ff70=2293616
la valeur de &s est égale à 0x22ff6c=2293612
la taille des pointeurs p est de 4 octets.
lorsque l’on soustraie des pointeurs : q-p, cela revient a faire :
( adresse de q – adresse de p)/(taille de q).
Donc q-p=(2293616-2293620)/4= -1
Or, gcc renvoie q-p=1.
Ou est mon erreur ?
Ce n'est pas &q qu'il faut afficher mais static_cast<void*>(q).
Pareil pour s.
Pour p ça devrait rien changer.
Boost ftw
effectivement, j'ai vu le résultat.
mais quelle est la différence entre static_cast<void*>(q) et &q ??
static_cast<void*>(q) c'est simplement q (qui est un char*) converti en void* pour que ce soit affiché comme une adresse et non comme une chaîne de caractère.
&q c'est l'adresse de q, c'est à dire l'adresse du pointeur, variable sur la pile.
Boost ftw
ok merci
resolu
Y a un bouton pour ça.Envoyé par deubelte
NB: le pré-requis sur les éléments des conteneurs standard est un pré-requis de copiabilité. Plus parfois un pré-requis d'ordre.
Blog|FAQ C++|FAQ fclc++|FAQ Comeau|FAQ C++lite|FAQ BS|Bons livres sur le C++
Les MP ne sont pas une hotline. Je ne réponds à aucune question technique par le biais de ce média. Et de toutes façons, ma BAL sur dvpz est pleine...
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