random_shuffle ne randomize pas [C++] - C++ - Programmation
Marsh Posté le 04-12-2004 à 12:58:10
Code :
|
Marsh Posté le 04-12-2004 à 13:30:45
mais je comprends pas, le code marche pour un tableau d'entier comme data[], mais avec mon vecteur rempli d'objets B. Qu'est-ce qui pourrait bien faire échouer le random_shuffle ? j'ai vérifié que begin() retourne bien le premier élément, à priori c'est bon.
Marsh Posté le 04-12-2004 à 13:36:55
Allez, t'en crève d'envie, fais péter le code de B. Je suis sûr qu'on va trouver des trucs qui manquent (constructeur de recopie, opérateur d'affectation, etc.).
Marsh Posté le 04-12-2004 à 13:46:07
Code :
|
voilou,
sinon j'ai essayé quand j'appelle 2fois de suite le random, le dernier élément de vecteur arrive en premier dans le vecteur...
Marsh Posté le 04-12-2004 à 13:49:07
Et si tu lui met un constructeur de copie, ça donne quoi ?
Marsh Posté le 04-12-2004 à 13:51:01
ben je comprend pas à quoi il sert, celui par défaut il fait pas l'affaire ? y a pas d'alloc dynamique...
Marsh Posté le 04-12-2004 à 13:54:42
une petite explication quant à la nécessité de ce constructeur serait la bienvenue
edit:
j'ai rajouté ça sans en être convaincu, ça change rien
Code :
|
Marsh Posté le 04-12-2004 à 14:05:14
bof, je vois pas l'utilité de ça ni comment ça pourrait changer quoi que ce soit. on fait ça dans operator= pour éviter de perdre des données. Dans le constructeur, je vois pas.
Si ta classe est de type POD, les constructeurs par recopie, affectation devrait être bon. Mais c'est quoi le code de ta fonction membre tostring ?
Marsh Posté le 04-12-2004 à 14:08:13
Taz a écrit : pourquoi tu static_cast ? |
tout à fait, je l'ai viré, et ça m'a fait penser à déclarer une méthode const pour que ça marche.
enfin ça randomize toujours pas
Marsh Posté le 04-12-2004 à 14:09:07
c'est ta classe qui est mitée. File ta classe __COMPLÈTE__
Marsh Posté le 04-12-2004 à 14:09:57
Code :
|
Marsh Posté le 04-12-2004 à 14:10:47
D'ailleurs, c'est pas louche que le compilo accepte de caster le truc pointé par un const_iterator en B (non const) ?
Marsh Posté le 04-12-2004 à 14:17:56
Code :
|
Citation : Ta ac zb |
Marsh Posté le 04-12-2004 à 14:31:40
bordel je comprends pas, y a toujours juste le dernier élément du vecteur qui passe premier et c'est le seul changement...
je précise que ce fait taz dans le main, moi je le fais dans le constructeur de la classe contenant le fameux vecteur à shuffler.
Marsh Posté le 04-12-2004 à 14:32:33
ah ben si après t'as un problème de combinatoire ... tu crois qu'il y a combien d'arrangement de 3 éléments ?
Marsh Posté le 04-12-2004 à 14:39:23
et bien du coup on décale encore d'un rang :
au début j'avais a b c d e
après 1 shuffle : e a b c d
après 1 shuffle : d e a b c
Marsh Posté le 04-12-2004 à 14:43:12
ben le problème c'est qu'avec 50 éléments c'est pareil, alors à moins que j'ai pas bien compris ce que fait shuffle, ça ne me satisfait pas comme "randomization" du vecteur ?
Marsh Posté le 04-12-2004 à 14:48:11
ce qui est bizarre, c'est que ton random_shuffle, on dirait next_permutation
c'est quoi ta STL ?
edit:
Code :
|
et moi je voudrais que tu testes mon exemple avec tout ça, voir ce que te donne un random_shuffle dessus
Marsh Posté le 04-12-2004 à 14:55:21
oh mais c'est que tu aurais bien raison sur ce doute :
je viens de compiler en ssh à la fac, et ça shuffle bien !
> ma version de STL serait-elle obsolète ?
Marsh Posté le 04-12-2004 à 15:00:33
Ta ac zb Fa oc rb Ea vc eb rb
rb Ta ac zb Fa oc rb Ea vc eb
Marsh Posté le 04-12-2004 à 15:11:51
mais comment je le vois ? le rep qui contient les include c'est 3.3.3 il me semble maintenant la STL je sais comment le savoir...
Marsh Posté le 04-12-2004 à 15:14:02
mais PUTAIN t'as quoi comme compilateur / libstdc++, packagé par qui etc ? ça fait 2 jours qu'on tourne autour du pot, j'en ai marre. T'as qu'à envoyer un rapport de bug à qui te fournit ton compilateur, moi j'en ai ma claque.
Marsh Posté le 04-12-2004 à 15:22:56
tout ce que je peux te dire en regardant les packages installés de cygwin :
gcc-g++ 3.3.3-3
de plus il me semble que cygwin utilise mingw.
voila maintenant j'en sais pas plus...
Marsh Posté le 04-12-2004 à 12:04:54
Salut,
malgré un appel à random_shuffle de la manière suivante :
je vois à l'affichage que les objets ne sont pas mélangés...
dans la classe A, vector<B> v;
je ne comprends pas pourquoi. de plus est-ce que mon itération est faite manière correcte pour l'affichage ?
merci
Message édité par antsite le 04-12-2004 à 13:13:42