[C / C++] Les Collections

Les Collections [C / C++] - C++ - Programmation

Marsh Posté le 02-06-2005 à 15:16:34    

Les collections en C++. Quel est la meilleur option pour stocker une collection d'objet?

  • Liste chainé (avec un objet + pointeur suivant précédent).
  • Tableau d'obejt, mais souci avec la taille du tableau, obligé de redéclarer un tableau plus grand dès que le tableau est rempli.


Quel est la meilleur solution selon vous?
Y en a t'il d'autre?

Reply

Marsh Posté le 02-06-2005 à 15:16:34   

Reply

Marsh Posté le 02-06-2005 à 15:34:05    

les conteneurs de la stl dont
std::list, std::vector
http://www.sgi.com/tech/stl/


---------------
-( BlackGoddess )-
Reply

Marsh Posté le 02-06-2005 à 22:48:26    

Le choix de ton conteneur dépend de comment tu accèdes à tes objets.


---------------
FAQ fclc++ - FAQ C++ - C++ FAQ Lite
Reply

Marsh Posté le 02-06-2005 à 23:05:59    

j'aime bien std:: deque [:el g]


Message édité par chrisbk le 02-06-2005 à 23:06:23

---------------
NP: HTTP Error 764 Stupid coder found
Reply

Marsh Posté le 03-06-2005 à 00:09:57    

moi aussi

Reply

Marsh Posté le 05-06-2005 à 20:22:13    

Ouais...
J'ai beaucoup fait de java donc je pense utilisé la calsse Vector...
http://seesar.lbl.gov/anag/chombo/ [...] ource.html

Reply

Marsh Posté le 05-06-2005 à 20:39:29    

Spir a écrit :

Les collections en C++. Quel est la meilleur option pour stocker une collection d'objet?

  • Liste chainé (avec un objet + pointeur suivant précédent).
  • Tableau d'obejt, mais souci avec la taille du tableau, obligé de redéclarer un tableau plus grand dès que le tableau est rempli.


Quel est la meilleur solution selon vous?
Y en a t'il d'autre?


 
il me semble que le container collection existe dans la stl si ton besoin est une simple collection (non indexé, non ordonné, non trié).

Reply

Marsh Posté le 05-06-2005 à 21:03:18    

non ça n'existe pas.

Reply

Marsh Posté le 05-06-2005 à 21:32:52    

Taz a écrit :

non ça n'existe pas.


 
exacte, erreure car je bosse avec une stl redéveloppée donc avec collection.
si tu n'as pas de duplicat, prends un set.

Reply

Marsh Posté le 05-06-2005 à 21:44:35    

j'aurais tendance a dire qu'on prends un set si on ne veut pas de duplicat, pas l'inverse


---------------
NP: HTTP Error 764 Stupid coder found
Reply

Marsh Posté le 05-06-2005 à 21:44:35   

Reply

Marsh Posté le 06-06-2005 à 19:23:04    

Les vecteurs c'est impec nan? Il et ou le problème? C'est un peu comme les vecteurs en Java?

Reply

Marsh Posté le 06-06-2005 à 19:33:02    

le vector c'est bien pour stoquer un collection de données stable une fois arrivé à un certain point.
=> l'insertion au début/milieu lente, mais l'accès aléatoire et le parcourt du début et à la fin est on pas faire mieux.
etc... etc...
 
moi j'utilises pas mal de hash_map pour mes collections de ressources, textures, modèles, tu ce qui est identifié par un chemin (en std::string ou en boost::filesystem:: path) etc... etc...


Message édité par bjone le 06-06-2005 à 19:33:11
Reply

Marsh Posté le 06-06-2005 à 19:37:55    

bref il faut que tu connaisses le profil de création/suppression d'objets de ta collection, accès séquentiel ou alétoire, critère de vitesse de recherche, etc, etc....
 
pour en revenir à ce que tu ferais pour un moteur 3D de jeu, les ressources textures, sons, modèles & co, sont en hash_map<std::string,...>, les entitées crées/détruites à haute fréquence sont dans une (double) liste chainée (donc list<> ), et triangles/vertex d'un modèles tu les fous dans un vector.

Reply

Marsh Posté le 06-06-2005 à 20:23:26    

Nan moi c'est pour un logiciel de gestion tout bête.
Pour gérer des objets. En fait je fait un outil de gestion d'une bibliothèque.
Donc dans mon vector je stock des objets de type 'emprunteur', 'ouvrage'. Plusieur colelction en fait pour gérer ma bibliothèque.

Reply

Marsh Posté le 06-06-2005 à 21:24:45    

Je suis allé voir ici apparement c'est pas comme enjava. je dois gérer la taille du vecteur...
Ce n'est donc pas forcémnt + intéressant qu'un tableau?

Reply

Marsh Posté le 06-06-2005 à 23:22:56    

bah un tableau c'est statique :D
 
et la gestion de la taille d'un vector, c'est optionel, t'as push_back() qui t'agrandi le conteneur pour toi.

Reply

Marsh Posté le 07-06-2005 à 00:58:01    

vive std::tr1::unordered_map<>

Reply

Marsh Posté le 07-06-2005 à 08:19:15    

Spir a écrit :

Les vecteurs c'est impec nan? Il et ou le problème? C'est un peu comme les vecteurs en Java?


 
Si tu insères des données au début ou au milieu de tes vector, tu vas vite comprendre le pb.
En l'occurence, pour un logiciel de gestion type bibliothèque,le type vector n'a pas d'intérêt, vu que tu vas faire des insertions/suppression, et que tu vas sans doute accéder aux objects par autre chose qu'un simple numéro (à par l'ISDN, mais tu ne vas pas le stocker sur des entiers consécutifs).


Message édité par el muchacho le 07-06-2005 à 08:23:50
Reply

Marsh Posté le 07-06-2005 à 10:28:37    

Taz a écrit :

vive std::tr1::unordered_map<>


connaissais po...

Reply

Marsh Posté le 07-06-2005 à 12:37:19    

el muchacho a écrit :

Si tu insères des données au début ou au milieu de tes vector, tu vas vite comprendre le pb.
En l'occurence, pour un logiciel de gestion type bibliothèque,le type vector n'a pas d'intérêt, vu que tu vas faire des insertions/suppression, et que tu vas sans doute accéder aux objects par autre chose qu'un simple numéro (à par l'ISDN, mais tu ne vas pas le stocker sur des entiers consécutifs).


Tu me conseil quoi du coup?
std::tr1::unordered_map<> ??

Reply

Marsh Posté le 07-06-2005 à 17:25:56    

help

Reply

Marsh Posté le    

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed