如何为多图中的特定键选择随机元素.例如:
multimap<string, string> map;
map.insert(pair<string, string>("Mammal", "Tiger"));
map.insert(pair<string, string>("Mammal", "Chicken"));
map.insert(pair<string, string>("Mammal", "Fox"));
map.insert(pair<string, string>("Fish", "Clown Fish"));
map.insert(pair<string, string>("Fish", "Ray"));
Run Code Online (Sandbox Code Playgroud)
在上面,获得随机"哺乳动物"的最佳方法是什么?
我知道我可以获得"哺乳动物"的迭代器所以:
pair<MultiMapIt,MultiMapIt>iterators = mMultiMap.equal_range("Mammal");
// loop through each... and select one.
Run Code Online (Sandbox Code Playgroud)
但我相信有更好的解决方案......也许使用迭代器作为数字..
谢谢
插入评论作为答案:
计算范围的大小
std::size_t sz = std::distance(iterators.first, iterators.second);
现在生成一个随机索引:
std::size_t idx = std::rand() % sz; // stupid example
将迭代器移动到该位置
std::advance(iterators.first, sz);
现在iterators.first指的是一个随机的哺乳动物.