原因:属于C++14之前标准,后续版本被弃用。
在C++中,std::random_shuffle 是一个函数模板,用于将一个容器中的元素随机打乱。然而,从C++14开始,std::random_shuffle 被标记为弃用,并且在C++17中被完全移除。取而代之的是使用 std::shuffle 函数,它接受一个随机数生成器作为参数来打乱容器中的元素。
使用 std::random_shuffle
(C++11及之前的版本)
#include <algorithm>
#include <vector>
#include <iostream>
int main() {
std::vector<int> vec = {1, 2, 3, 4, 5};
// 使用 random_shuffle 打乱 vec 中的元素
std::random_shuffle(vec.begin(), vec.end());
for (int num : vec) {
std::cout << num << " ";
}
std::cout << std::endl;
return 0;
}
使用 std::shuffle
(C++14及之后的版本)
#include <algorithm>
#include <vector>
#include <iostream>
#include <random> // 引入随机数库
int main() {
std::vector<int> vec = {1, 2, 3, 4, 5};
// 创建一个随机数生成器
std::mt19937 generator(std::random_device{}());
// 使用 shuffle 和随机数生成器打乱 vec 中的元素
std::shuffle(vec.begin(), vec.end(), generator);
for (int num : vec) {
std::cout << num << " ";
}
std::cout << std::endl;
return 0;
}