c++ - 为什么在 C++14 中不推荐使用 std::shuffle 方法?

标签 c++ c++11 deprecated c++14 stl-algorithm

根据cppreference.com引用网站 std::shufle ,以下方法在 c++14 中被弃用:

template< class RandomIt >
void random_shuffle( RandomIt first, RandomIt last );

为什么不传递第三个参数就不能调用下面的函数了?

std::random_shuffle(v.begin(),v.end()); //no longer valid in c++14

看起来不同的功能减速没有默认参数集。这背后的原因是什么?是否添加了某种替代方案?

最佳答案

std::random_shuffle 可以在后台使用 random C 族函数。这些函数将全局状态用于种子和其他状态。

所以它被弃用了,因为 shuffle会做同样的事情,但会更好。即,它使用新的 <random>来自 C++11 的头文件,它不使用全局状态,而是使用生成器、设备和分发的自己的对象。

关于c++ - 为什么在 C++14 中不推荐使用 std::shuffle 方法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22600100/

相关文章:

c++ - 'auto a_class::f(...) -> T const' 在语法中是否有歧义?

android - GET_TASKS权限已弃用

c++ - 弃用 C++ 中类的旧名称

c++ - 将 cv::mat 转换为 cv::arr 时出错

c++ - RSA 公钥加密 openssl

c++ - boost-asio 作为守护进程的 "template"

c++ - 圆线段碰撞 C++ (UE4)

c++ - templates, typename, lambda -> 依赖名称不依赖?

c++ - 在 C++0x 中删除虚函数

java - 在 java 中哪里可以找到已弃用项目的替代品?