Термин не оценивает функцию с ошибкой в ​​1 аргумент? - PullRequest
0 голосов
/ 09 мая 2018

Я написал этот код, чтобы в основном перемешать вектор, и я получаю эту ошибку, и я не уверен, что не так. Я включил алгоритм. Спасибо!

// Shuffle the vector
random_shuffle(names.begin(), names.end(), rand());

// Prelims
cout << "ROUND PRELIMINATION: BEGIN" << endl;
cout << names[32] << " versus " << names[29] << endl << "Please enter the winner: ";
cin >> winner;
round1.push_back(winner);
cout << endl << names[33] << " versus " << names[30] << endl << "Please enter the winner: ";
cin >> winner;
round1.push_back(winner);
cout << endl << names[34] << " versus " << names[31] << endl << "Please enter the winner: ";
cin >> winner;
round1.push_back(winner);
for (int i = 0; i < 29; i++) {
    round1.push_back(names[i]);
}

1 Ответ

0 голосов
/ 09 мая 2018

Последний аргумент random_shuffle должен быть функциональным объектом, возвращающим случайно выбранное значение. rand() оценивается как int. Следовательно, его нельзя использовать в качестве последнего аргумента функции.

Следующее должно работать.

// Shuffle the vector
random_shuffle(names.begin(), names.end(), [](int n) { return rand()%n; });
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...