std::vector 的高效洗牌
当洗牌 std::vector 时,效率起着至关重要的作用。提供的使用中间数组和特定于类型的知识的方法并不是最佳的。
现代 C 方法
在 C 11 及更高版本中,可以使用更有效的方法:
#include <algorithm> #include <random> auto rng = std::default_random_engine {}; std::shuffle(std::begin(cards_), std::end(cards_), rng);
此方法利用 std::shuffle 函数,可以有效地随机化元素。请记住在多个 std::shuffle 调用中重用 rng 实例,以实现一致的随机化。
个性化洗牌
如果您希望在程序执行中获得不同的随机序列,请播种随机序列输出为 std::random_device:
auto rd = std::random_device {}; auto rng = std::default_random_engine { rd() }; std::shuffle(std::begin(cards_), std::end(cards_), rng);
C 的引擎98 方法
对于 C 98,std::random_shuffle 函数仍然适用:
#include <algorithm> std::random_shuffle(cards_.begin(), cards_.end());
以上是如何在 C 中有效地洗牌 std::vector ?的详细内容。更多信息请关注PHP中文网其他相关文章!