Как использовать алгоритм random_shuffle() на list в c++
Я пробывал сделать это с помощью итераторов для первой половины списка, но оно выдаёт ошибку
list <int> lis = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10};
random_shuffle(next(lis.begin()), next(lis.begin(), 5));
Ответы (1 шт):
shuffle (и random_shuffle который устарел и удален) нуждается в итераторе произвольного доступа.
list не имеет итератора произвольного доступа.
Вы можете скопировать элементы в вектор, перемешать вектор, а затем перестроить список. (по сути выполнить вашу часть алгоритма)
Или вообще не использовать список.
Следующее предложение исходит из задачи ниже по ссылке, требуется перетасовать список.
Придумайте алгоритм перетасовки для списка. Например - разделите его на две части, произвольно объедините половинки и повторите несколько раз, чтобы имитировать перетасовку колоды карт.