首页 > 后端开发 > C++ > 如何在 C 中有效地洗牌 std::vector ?

如何在 C 中有效地洗牌 std::vector ?

Barbara Streisand
发布: 2024-12-30 19:23:14
原创
310 人浏览过

How Can I Efficiently Shuffle a std::vector in C  ?

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中文网其他相关文章!

来源:php.cn
本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
作者最新文章
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板