我正在寻找一种随机化 std::map<unsigned int,double>
的方法以一种将键和值保持在一起但混合元素的方式。你有什么好的建议吗?我发现 std::random_shuffle
不适用于 map 。以 vector 格式混洗值对我的情况没有帮助。提前感谢您的任何建议!
最佳答案
std::map
is a sorted associative container ,因此它不支持键值对的任意重新排列。
假设您需要映射来关联键和值,您可以使用指向映射元素的辅助 std::vector
指针来定义不同的迭代序列:
using pair_type = std::pair<unsigned int, double>;
std::vector<const pair_type*> pair_ptrs;
for(const auto& p : your_map)
{
pair_ptrs.emplace_back(&p);
}
std::shuffle(std::begin(pair_ptrs), std::end(pair_ptrs), /* ... */);
(请注意 std::random_shuffle
is deprecated。您应该改用 std::shuffle
。)
关于c++ - 在 C++ 中随机化 map ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41551874/