嘿家伙我试图洗牌我的动态数组的内容,它不工作。即时通讯想知道如果有任何建议或链接/资源,可以帮助我。我正在尝试使用std :: randomshuffle,但我的测试正在吐出0而不是正确的数据。c + +洗牌动态数组的内容?
Songs *ptr;
ptr = new Songs[25];
ifstream fin;
fin.open("input.txt");
while (fin.good()) //my input
{
getline(fin, song[num].title);
getline(fin, song[num].artist);
fin >> song[num].mem;
num++;
fin>>ws;
}
fin.close();
和我的继承人功能我尝试使用randomshuffle
void shuffle (char choice, Songs song[], Songs *ptr, string title, string artist, int mem, int num)
{
if (choice == '4')
{
std::random_shuffle(ptr, ptr + num); //shuffle
}
for (int i = 0; i<num; i++) //test
{
cout << ptr[i].title << ptr[i].artist << ptr[i].mem << endl;
}
}
为什么所有的参数'shuffle()'函数?你只使用'ptr'和'num'。而逻辑是否洗牌也不应该在洗牌功能中完成。 – jrok 2012-03-02 00:09:13
以及那些是我的ptr数组的内容,所以我想我不得不包括那些以及 – gamergirl22 2012-03-02 00:17:28
@ gamergirl22绝对不需要,不应该这样做。之后,你必须考虑如何有效地设计代码:这个洗牌功能的重点在于将歌曲洗牌并打印出来。所以我们需要的是歌曲和歌曲(不是'歌曲'和'ptr')也是多余的。 – stinky472 2012-03-02 00:22:24