Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
1239 connectés 

  FORUM HardWare.fr
  Programmation
  C++

  random_suffle?

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

random_suffle?

n°935544
fessebleu
Posté le 03-01-2005 à 10:19:13  profilanswer
 

bonjour à tous, voici mon problème je voudrais mélanger une liste d'élément quelconque grâce à la fonction random-shuffle mais je n'y arrive pas est ce quelqu'un pourrait m'aider.
voici un exemple de programme qui se rapproche du mien
 
 
#include<iostream>
#include<algorithm>
#include<list>
#include<iterator>
 
using namespace std;
 
 
 
 
int main()
{
 
  list<int> essai;
  essai.push_front(1);
  essai.push_front(2);  
  essai.push_front(3);
  essai.push_front(4);
  essai.push_front(5);
 
  list<int>::iterator i = essai.begin();
  while(i != essai.end())
    {
      cout<<*i<<endl;
      i++;
    }
 
  random_shuffle(essai.begin() ,essai.end());
  while(i != essai.end())
    {
      cout<<*i<<endl;
      i++;
    }
 
}

mood
Publicité
Posté le 03-01-2005 à 10:19:13  profilanswer
 

n°935550
Taz
bisounours-codeur
Posté le 03-01-2005 à 10:36:21  profilanswer
 

faudrait voir à remettre ton itérateur 'i' au début de ta liste 'essai'

n°935553
fessebleu
Posté le 03-01-2005 à 10:45:43  profilanswer
 

j'ai essayé mais j'ai ca comme erreur
 
/usr/include/c++/3.3/bits/stl_algo.h: Dans function « void  
   std::random_shuffle(_RandomAccessIter, _RandomAccessIter) [with  
   _RandomAccessIter = std::_List_iterator<int, int&, int*>] »:
essai.cpp:30:   instantiated from here
/usr/include/c++/3.3/bits/stl_algo.h:1645: error: no match for 'operator+' in '
   __first + 1'
essai.cpp:30:   instantiated from here
/usr/include/c++/3.3/bits/stl_algo.h:1646: error: no match for 'operator-' in '
   __i - __first'
 
 

n°935557
Taz
bisounours-codeur
Posté le 03-01-2005 à 10:51:37  profilanswer
 

ça c'est parce que std::list<> ne fournit pas de RandomAccessIterator. Il te faut utiliser un std::vector<>, au moins temporairement
 
  vector<int> temp(essai.begin(), essai.end());
  random_shuffle(temp.begin(), temp.end());
  essai = list<int>(temp.begin(), temp.end());

n°935564
fessebleu
Posté le 03-01-2005 à 11:02:14  profilanswer
 

merci ca fonctionne


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  C++

  random_suffle?

 

Sujets relatifs
[C++] random_shuffle donne toujours les memes combinaisons...[C++] random_shuffle ne randomize pas
[java] un random avec une valeur intrandom background picture
random à partir d'un nombrerandom
randomfonction Random pas si aleatoire ke sa
[HTML] Dossier protégé, les images s'affichent random[c]demande de conseil sur pogrammation random d'une playlist
Plus de sujets relatifs à : random_suffle?


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR