c++ - 如何在不重复的情况下随机迭代 vector 的每个元素

标签 c++ c++11 vector

我尝试使用 rand()srand() 来生成随机索引号,但我仍然得到重复的索引是否有任何其他方法可以迭代 a 的所有元素vector buy 随机获取索引而不影响 vector 元素的顺序 我不能 random_shuffle() 因为随机洗牌会改变我的 vector 元素的顺序,而这些元素的顺序很重要。

最佳答案

使用std::iota用索引填充 vector 。然后使用 std::shuffle打乱索引 vector 。使用索引 vector 迭代主 vector 。

作为实践留给 OP 实现。

关于c++ - 如何在不重复的情况下随机迭代 vector 的每个元素,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58435663/

相关文章:

c++ - 燕麦++ : put DTO in a list of DTOs

c++ - 我可以从第三个线程监控 boost::lockfree::spsc_queue 吗?

c++ - 如何避免在 C++ 中进行一些繁重的处理时阻塞线程?

c++ - C++ 中的 vector 不响应一种方法但对其他方法很好

r - 从多串字母和数字中减去1个字母和数字

c# - 无法加载或创建VS 2015.1。项目。无法创建Visual C#2015编译器

c++ - JIT 编译器和异常处理

c++ - 使用 ostream_iterator 将映射复制到文件中

c++ - 如何让 MyClass 的用户通过编译器标志控制类的哪个版本被实例化?

C++ STL vector