| |||||
| Dernière réponse | |
|---|---|
| Sujet : [C++] Ensemble ?? | |
| Majca Jalasu | Merci pour ces réponses. :) |
| Aperçu |
|---|
| Vue Rapide de la discussion |
|---|
| Majca Jalasu | Merci pour ces réponses. :) |
| LeGreg |
|
| LeGreg | l'idee generale du vector
c'est qu'il grossit comme tu l'indiques mais de maniere plus intelligente parce que sinon le cout d'ajout d'un element serait trop important: en fait il est important pour le xieme element, x etant determine en fonction de la derniere fois qu'on a du redimensionner le truc. Exemple: tu as un tableau de 4 elements tu vas ajouter un element sauf que pas bete tu te dis c'est con de redimensionner a 5 alors que j'aurais surement envie d'en ajouter un 6e-> tu redimensionnes a 8 et ainsi de suite tu redimensionneras quand tu atteindras 9 elements. Le tout c'est d'avoir une bonne fonction qui garantit suffisamment peu de redimensionnements Rien ne t'empeche de dimensionner ton tableau a l'avance quand tu sais deja a peu pres combien d'elements tu auras dans ton tableau. (si tu n'en sais rien on ne peut rien faire pour toi). Et le tableau n'est pas redimensionne a la baisse sauf quand tu lui demandes explicitement. Et tu ne peux pas enlever "simplement" un element sans tout decaler ceux qui sont derriere. Une liste a chaque fois que tu ajoutes un element tu fais appel a un malloc (enfin ca peut etre fait de maniere plus intelligente) et tu dois pouvoir ajouter et enlever des elements en temps constant mais en contrepartie, pour atteindre l'element N tu dois te taper les N-1 premiers! pas cool.. Bref pour faire ce que tu veux (acces aleatoire a des donnees et taille dynamique) le vector est surement le plus indique. (si tu peux majorer le nombre d'elements rien ne t'empeche de faire un tableau statique avec un compteur du nombre d'elements !) A+ LEGREG |
| Willythekid | Pour le vector de la STL, oui on est proche de la première idée...(celle du tableau). C'est tout sauf une liste parce que l'idée comme je l'ai souligné précédement, c'est d'avoir un container qui permette de faire des choses différentes d'une liste.
Maintenant, ca ne veut pas dire que l'on se tape des réallocations de mémoire à chaque suppression ou insertion d'éléments!! Heureusement non, et l'algo de la STL est probablement suffisament évolué pour que ca ne se passe pas ainsi....Il ne fait pas "que "masquer" ça." Comme tu le dis si bien "je m'étais dis que si cette "librairie" avait existé, son code aurait très certainement été meilleur que le mien." En terme de tableau dynamique, je pense que l'on peut faire difficilement mieux que la STL! :) |
| Majca Jalasu | thx :) |
| Da True Clouseau | Doc sur la STL (vector, set, list, ...)
http://www.sgi.com/tech/stl/ |
| Majca Jalasu | C'est bien la raison pour laquelle je tiens à remplacer ma liste par autre chose ;)
Je n'ai jamais utiliser d'objet vector et ne connais donc pas les performences du machin. J'avais peur que ce soit effectivement très pratique mais aussi et surtout très "industrie" si vous voyez ce que je veux dire... Vector est-il sotcké sur un vecteur (=>statique) et dès qu'on insère un nouvel élément, il recopie le tout dans un vecteur de taille n+1 ou bien c'est une série d'élément (=>dynamique) chaque élément pointant vers l'élément suivant. J'ai l'impression que la première solution est la bonne... et qu'il ne fait que "masquer" ça. Quelqu'un en sait-il plus à ce niveau là ? [jfdsdjhfuetppo]--Message édité par Majca Jalasu--[/jfdsdjhfuetppo] |
| Willythekid | Pour vector, je pense que c'est un type en algorithmie et pas seulement dans la STL. Ca existe en java par exemple (je crois).
Et ce n'est pas une simple liste... Dans une liste tu ne peux pas accéder aux éléments de manière aléatoire (indépandamment des uns des autres). Ce que tu peux faire avec un vecteur. En revanche, la complexité algorithmique pour ajouter un élément dans un vecteur est plus élevé que dans une liste, etc. etc. Comme tu le vois, l'utilisation d'une liste et d'un vecteur est différente et dépend de tes besoins :) Sinon, oui, je crois qu'on parlait tous de la même chose :D |
| Majca Jalasu | On parle de la même chose mais avec d'autre nom...
Bref, on es d'accord. Quand à ces "trois lignes", ok, c'est tout con à faire. Mais je m'étais dis que si cette "librairie" avait existé, son code aurait très certainement été meilleur que le mien ;). |
| Majca Jalasu | oui oui, désolé !
J'ai dis vecteur parce que j'ai pour abitude de ne pas utiliser la libraire vector... =>Pour moi, Vecteur = type [cst]; quand à vector, c'est une liste. Bref, "chez moi", un vecteur est statique et une liste dynamique. C'est comme ça qu'on me l'a appris. :p Tu n'es pas d'accord ? |
| Willythekid | :ouch: Et merde griller.... |
| Willythekid | Ben non qu'est ce que tu veux que y ait une librairie qui fasse ca, c'est 3 lignes de code!!!
Quand au vecteur, ben si, c'est justement le bon cas si tu as une taille indeterminé et que tu veux piocher un élément au hasard. Un vecteur n'est pas un array et peut se réduire et s'augmenter à l'infini. Prend le "vector" de la SDL par exemple...Y a peut-être même des fonctions pour te sortir un élément au hasard!!! :) |
| Ventilo | Array != Vecteur
Une array est d'une taille prédéterminé Array[x] ou Array *q = new Array[x]; Un vecteur: Vector.add() etc.. |
| Majca Jalasu | euh... array... => vecteur ?!?
Neni, j'aurais du dire un sac de taille indéterminée ;) Le nombre d'item qui sont dans le sac varie. Un vecteur n'est donc pas bon dans mon cas. Si je comprends bien ce que vous avez dit, c'est de faire un vecteur, de générer un nombre aléatoire et d'aller pêcher l'élément correspondant. Si c'est le cas, je m'attendais à mieux... pfff... :p Sérieusement now, j'avais espéré qu'une telle structure existe dans les librairies de base:) en supposant que ce serait plus otpimisé qu'une solution maison. [jfdsdjhfuetppo]--Message édité par Majca Jalasu--[/jfdsdjhfuetppo] |
| Willythekid | Et si tu veux prendre un element au hasard de ce tableau, tu fais une classe qui contient ce tableau et qui contient une fonction membre qui pioche un élément du dit tableau...
Hum...c'est...trivial :) |
| Ventilo | tu parle dun array la? array[] ?? :pt1cable: |
| Majca Jalasu | Existe-t-il un structure de type "ensemble" en c++ ?
J'entends par ensemble un "sac" => j'ai un ensemble dans lequel j'insère divers éléments. Ensuite, je désire pouvoir en prendre un au hasard. Bref, J'aurais besoin d'un moyen de "piocher" au hasard un élément d'une structure globale quelconque. Majca Ps: Une liste que je parcours jusqu'à l'item RAND_NUM, j'ai déjà ! ;) |




