IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

C++ Discussion :

Melanger un vecteur de strings


Sujet :

C++

  1. #1
    Membre régulier
    Inscrit en
    Septembre 2002
    Messages
    200
    Détails du profil
    Informations forums :
    Inscription : Septembre 2002
    Messages : 200
    Points : 120
    Points
    120
    Par défaut Melanger un vecteur de strings
    Bonjour,

    Je dispose simplement d'un vecteur de string et je souhaite le mélanger aléatoirement.
    J'ai deja essayé la fonction std::random_shuffle mais celle ne me convient pas car elle me renvoit un vecteur qui finalement est mélangé mais toujours dans le meme ordre. Je présume que c'est parce que la fonction random_shuffle mélange les adresses mémoires des std::string plutot que les chaines elles memes. Utiliser random_shuffle avec des entiers doit (je suppose) tres bien fonctionner. En l'occurence, je ne sais pas comment faire "simplement", et avec la STL.

    Auriez vous une idee ?

    Merci.
    Alexandre.

  2. #2
    Expert éminent sénior
    Avatar de Médinoc
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Septembre 2005
    Messages
    27 382
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2005
    Messages : 27 382
    Points : 41 588
    Points
    41 588
    Par défaut
    Ce code marche chez moi...
    Code C++ : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    #include <vector>
    #include <iostream>
    #include <algorithm>
    #include <string>
     
    void TestVector2(void)
    {
    	static const std::string initStrings[] = {
    	 "a","b","c","d","e","f","g","h","i","j","k","l","m",
    	 "n","o","p","q","r","s","t","u","v","w","x","y","z"
    	 };
    	std::vector<std::string> strings;
    	strings.assign(initStrings, initStrings+ARRAYSIZE(initStrings));
     
    	std::random_shuffle(strings.begin(), strings.end());
     
    	std::vector<std::string>::iterator it, itEnd;
    	itEnd = strings.end();
    	for(it=strings.begin() ; it!=itEnd ; ++it)
    		std::cout << *it << std::endl;
    }
    Par contre, si par "toujours dans le même ordre" tu veux dire à chaque exécution c'est mélangé pareil, c'est un problème de "graine" aléatoire. Je sais régler cela en C Standard, mais je ne sais pas comment on le fait selon la philosophie C++...
    Edit: Tu peux essayer ceci:
    Code C++ : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    #include <cmath>
    #include <ctime>
     
    void InitRandom(void)
    {
    	std::srand(static_cast<unsigned int>(std::time(NULL)));
    }
    Et appeler la fonction au début de ton programme...

  3. #3
    Membre régulier
    Inscrit en
    Septembre 2002
    Messages
    200
    Détails du profil
    Informations forums :
    Inscription : Septembre 2002
    Messages : 200
    Points : 120
    Points
    120
    Par défaut
    Merci Medinoc, tu avais raison, c'était exactement mon probleme: initialiser la graine au debut de mon appli, je ne me souvenais plus de cette subtilité !

    Encore merci et a la prochaine.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 2
    Dernier message: 11/10/2008, 11h51
  2. conversion de vecteur de string en entier?
    Par toutounesan dans le forum C++
    Réponses: 31
    Dernier message: 26/09/2007, 15h04
  3. Création d'un tableau de Vecteur de String
    Par Claythest dans le forum Collection et Stream
    Réponses: 7
    Dernier message: 29/11/2006, 18h43
  4. [.Net] Return d'un vecteur de String*
    Par Colbix dans le forum VC++ .NET
    Réponses: 8
    Dernier message: 25/06/2006, 19h57
  5. [Débutant]vecteur de string
    Par Tonta dans le forum C++
    Réponses: 3
    Dernier message: 25/05/2006, 15h00

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo