2017-02-27 3 views
0

J'utilise typedef boost :: unordered_map. comment obtenir un élément aléatoire v: C++ Code 03comment obtenir un élément aléatoire boost unordered_map?

:

member_1.insert(std::make_pair(gg, M2_NEW CGGList(gg))); 

    typedef boost::unordered_map<CGG, CGGList*> Map1; 
    Map1 member_1; 
+0

Générer une clé aléatoire pour obtenir une valeur aléatoire.Utiliser un itérateur pour itérer plusieurs fois de manière aléatoire –

Répondre

0

Vous ne trouverez pas une méthode efficace (mauvaise structure de données).

Mais vous pouvez toujours:

auto random_it = std::next(member1.begin(), my_random(member2.size())); 

Où my_random serait mis en œuvre comme rand()%n (mauvais) ou en utilisant std::uniform_int_distribution<size_t> (beaucoup mieux).

+0

auto? J'utilise C++ 03 –

+0

Alors? Remplacez-le par les types appropriés. Je ne vois pas le problème. Je répondais à la question, je ne suis pas obligé d'enseigner le C++ ou d'écrire des solutions complètes à des spécifications inconnues, je pense. – sehe

+0

question est comment .. sur 03 –