【发布时间】:2014-02-08 22:35:03
【问题描述】:
所以我有一个卡片向量,我正在尝试使用 random_shuffle 方法对其进行洗牌,但它不会通过只传递第一个和最后一个项目来洗牌。所以我知道有第三个参数是自定义种子,它的东西 random_shuffle 说它没有找到任何用这些参数重载的函数(或类似的东西 - 我的程序是西班牙语)
基本上,我有两个向量,enemyCards 和 playerCards,大小都是 5。
random_shuffle(enemyCards.begin(), enemyCards.end());
random_shuffle(playerCards.begin(), playerCards.end());
这编译但不工作,而
int myrandom (int i) { return std::rand()%i;}
random_shuffle(enemyCards.begin(), enemyCards.end(), myrandom);
random_shuffle(playerCards.begin(), playerCards.end(), myrandom);
甚至不编译。
我做错了吗?
我在代码的开头有一个 srand() 和其他工作 rand(),所以应该可以正常工作,只是 random_shuffle 没有。
这是编译器在使用 myrandom 方法时所说的:
Error 11 error C3867: 'comgrid::Game::myrandom': function call missing argument list; use '&comgrid::Game::myrandom' to create a pointer to member
Error 12 error C2780: 'void _STL::random_shuffle(_RandomAccessIter,_RandomAccessIter)' : expects 2 arguments - 3 provided
这很奇怪,因为在 cplusplus 上确实是 1:1 的例子。
【问题讨论】:
-
您是否遇到任何类型的编译错误?像类型错误?
-
See
std::random_shuffle的函数对象条件 -
我只是快速安装英文版的VS2012,然后我会发布编译器错误
-
好的,我已将它们添加到我的帖子中。
标签: c++ random vector shuffle random-seed