当前位置:  开发笔记 > 编程语言 > 正文

地图中的随机元素

如何解决《地图中的随机元素》经验,为你挑选了3个好方法。

从地图中选择随机元素的好方法是什么?C++.据我所知,地图没有随机访问迭代器.密钥很长,地图人口稀少.



1> James Curran..:
map<...> MyMap;
iterator item = MyMap.begin();
std::advance( item, random_0_to_n(MyMap.size()) );


#include &include 加上你必须滚动你自己的random_0_to_n()
...并确保你的random_0_to_n()总是
2> ryan_s..:

如果地图很小或者你不经常需要随机值,我喜欢詹姆斯的回答.如果它很大并且您经常这样做以使速度变得重要,那么您可以保留一个单独的键值向量来从中选择随机值.

map<...> MyMap;
vector<...> MyVecOfKeys; // <-- add keys to this when added to the map.

map<...>::key_type key = MyVecOfKeys[ random_0_to_n(MyVecOfKeys.size()) ];
map<...>::data_type value = MyMap[ key ];

当然,如果地图真的很大,你可能无法存储这样的所有键的副本.如果你能负担得起,虽然你可以在对数时间内获得查找的优势.



3> Assaf Lavie..:

也许绘制一个随机密钥,然后使用lower_bound来查找实际包含的最近密钥.

推荐阅读
路人甲
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有