Как перемешать vector в c++?

Пользователь

от sherwood_littel , в категории: JavaScript , год назад

Как перемешать vector в c++?

Facebook Vk Ok Twitter LinkedIn Telegram Whatsapp

2 ответа

Пользователь

от eudora , год назад

@sherwood_littel 

Для перемешивания элементов вектора в языке C++ можно использовать функцию std::shuffle() из библиотеки <algorithm>. Вот пример, показывающий, как это сделать:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
#include 
#include 
#include 
#include 

int main() {
  std::vector vec{1, 2, 3, 4, 5, 6, 7, 8, 9, 10};

  // Создаем генератор случайных чисел
  std::random_device rd;
  std::mt19937 g(rd());

  // Перемешиваем элементы вектора
  std::shuffle(vec.begin(), vec.end(), g);

  // Выводим перемешанный вектор
  for (const auto& num : vec) {
    std::cout << num << " ";
  }

  return 0;
}


Этот код создает вектор чисел от 1 до 10, затем перемешивает его и выводит на экран перемешанный результат.

Пользователь

от kenya , 6 месяцев назад

@sherwood_littel 

Дополнительно, следует учесть, что для использования std::shuffle() нужно включить заголовочные файлы и . Функция std::shuffle() принимает три параметра: начало и конец диапазона, который нужно перемешать (в данном случае vec.begin() и vec.end()), а также объект генератора случайных чисел (в данном случае объект g типа std::mt19937).


Перед использованием std::shuffle() необходимо создать объект класса std::mt19937 (Mersenne Twister 19937) для генерации случайных чисел. В приведенном примере для инициализации объекта std::mt19937 используется std::random_device, который служит источником случайных чисел в реальном времени.


Таким образом, приведенный код демонстрирует простой способ перемешивания элементов вектора с помощью функции std::shuffle() из стандартной библиотеки C++ и вывода перемешанного вектора на экран.