Eve*_*ett 1 c++ arrays pointers
我对C++很新,并且不太了解带有指针和引用的函数参数.我有一系列卡片,我想使用Fisher-Yates shuffle进行洗牌.甲板被宣布为
Card *deck[deckSize];
Run Code Online (Sandbox Code Playgroud)
其中deckSize已声明为24.然后初始化该数组.然后我调用shuffle函数:
void shuffle (Card * deck[]) {
int deckSize = 24;
while (deckSize > 1) {
long int k = lrand48();
k = k %24;
deckSize--;
Card * temp = deck[deckSize];
deck[deckSize] = deck[k];
deck[k] = temp;
}
}
Run Code Online (Sandbox Code Playgroud)
如果我在调用shuffle函数后尝试打印卡的值,则会出现seg错误.有关如何正确执行此操作的任何指示?
use*_*255 14
只需使用std::random_shuffle找到的内容<algorithm>,如下所示:
std::random_shuffle(deck, deck + deckSize);
Run Code Online (Sandbox Code Playgroud)
和你的牌组一起洗牌.
我的C/C++生锈了,但我认为你的声明:
Card *deck[deckSize];
Run Code Online (Sandbox Code Playgroud)
正在向卡片声明一系列指针.你不想要这个吗?
Card deck[deckSize];
Run Code Online (Sandbox Code Playgroud)
然后声明shuffle:
void shuffle (Card deck[])
Run Code Online (Sandbox Code Playgroud)
请记住,数组是0索引的.不确定你是否曾经访问过第24个元素,但那将是一个嘘声.
| 归档时间: |
|
| 查看次数: |
14807 次 |
| 最近记录: |