“random_shuffle”:不是“std”错误的成员
原因:属于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;
}