je la fonction suivante, qui génère un nombre entier dans une plage donnée:pointeurs de lecture aléatoire et la fonction aléatoire
18 int choosecard(){
19 boost::uniform_int<> dist(0,51);
20 boost::variate_generator< boost::mt19937&, boost::uniform_int<> > cardchoice(gen, dist);
21 return cardchoice();
22 }
Je veux l'utiliser comme un argument à std :: random_shuffle, afin que je puisse mélanger un vecteur de 52 entiers.
64 int (*pchoosecard)(void) = choosecard;
65
66 std::random_shuffle(cards.begin(), cards.end(), pchoosecard);
Cependant je reçois cette erreur que je ne comprends pas:
$ make
g++ -I /usr/local/boost_1_45_0/ -c main.cpp
In file included from /usr/include/c++/4.4/algorithm:62,
from /usr/local/boost_1_45_0/boost/any.hpp:13,
from /usr/local/boost_1_45_0/boost/program_options/value_semantic.hpp:12,
from /usr/local/boost_1_45_0/boost/program_options/options_description.hpp:13,
from /usr/local/boost_1_45_0/boost/program_options.hpp:15,
from main.cpp:1:
/usr/include/c++/4.4/bits/stl_algo.h: In function ‘void std::random_shuffle(_RAIter, _RAIter, _Generator&) [with _RAIter = __gnu_cxx::__normal_iterator<int*, std::vector<int, std::allocator<int> > >, _Generator = int (*)()]’:
main.cpp:66: instantiated from here
/usr/include/c++/4.4/bits/stl_algo.h:4998: error: too many arguments to function
make: *** [main.o] Error 1
Tout compile bien quand je commente la ligne qui appelle std :: random_shuffle.
Quelqu'un peut-il faire la lumière sur ce problème?
Merci, mais je suis encore assez confus. Je n'ai pas de constructeur uniform_dist. Voulez-vous dire la ligne avec boost :: uniform_int <> dist (0,51)? J'ai fait choosecard prendre un ptrdiff_t, je. Et puis changé la ligne ci-dessus à boost :: uniform_int <> dist (0, i-1); Cependant, je reçois juste plus de bogues cryptiques – oadams
nevermind, problème résolu. – oadams