从 C++ 中的 STL 容器(Vector、列表、集合)中获取随机值

Google Translate Icon

这篇文章将讨论如何从 C++ 中的 STL 容器中获取随机值,例如 std::vector, std::list, std::set, std::map, ETC。

1.使用迭代器

我们可以使用迭代器在给定的 STL 容器中获取随机值。我们知道所有 STL 容器都支持迭代器。这个想法是生成一个随机数 r 介于 0 和 n-1, 在哪里 n 是容器的大小。然后我们将一个迭代器带到给定容器的开头,并将该迭代器推进 r 职位。现在迭代器指向的对象将是我们的随机值。

生成 0 到 0 之间的随机值 n-1, 我们可以使用 cstdlib 的函数 rand()srand() 或使用定义的任何标准生成器 <random> C++11 中引入的头文件。

 
有很多替代方案 将迭代器推进 r 职位:

⮚ 使用 std::advance

标准算法 std::advance 可用于将迭代器推进指定位置。

下载  运行代码

⮚ 指针运算

下面的代码可以工作,因为我们可以在迭代器上执行指针运算。

下载  运行代码

⮚ ++ 运算符

另一种解决方案是使用 ++ while 循环中的运算符将迭代器前进指定位置,如下所示:

下载  运行代码

2.使用 [] 操作员

我们也可以使用成员函数 operator[] 由序列容器提供,如 std::vector, std::array, std::deque 其元素使用连续的存储位置。这种方法作为 [] 运算符返回容器中指定位置的元素。

下载  运行代码

这就是从 C++ 中的 STL 容器中获取随机值的全部内容。

评价这篇文章

平均评分 4.25/5。票数: 8

暂时没有票!成为第一个给这篇文章评分的人。

很抱歉这篇文章对您没有用处!

告诉我们如何改进这篇文章?




谢谢阅读。

请使用我们的 在线编译器 使用 C、C++、Java、Python、JavaScript、C#、PHP 和许多更流行的编程语言在评论中发布代码。

像我们?将我们推荐给您的朋友,帮助我们成长。快乐编码 :)



订阅
通知
guest
2 注释
投票最多
最新 最老的
内联反馈
查看所有评论
请勿点击此链接,否则您将被禁止访问该网站!