gpt4 book ai didi

c++ - 为 Multimap 中的特定键选择随机元素

转载 作者:行者123 更新时间:2023-11-30 01:25:56 26 4
gpt4 key购买 nike

如何为多映射中的特定键选择随机元素。例如:

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"));

在上面,获得随机“哺乳动物”的最佳方法是什么?

我知道我可以获得“哺乳动物”的迭代器,所以:

pair<MultiMapIt,MultiMapIt>iterators = mMultiMap.equal_range("Mammal");
// loop through each... and select one.

但我确信有更好的解决方案......也许使用迭代器作为数字..
谢谢

最佳答案

插入评论作为答案:

  1. 获取迭代器范围 - 你已经有了这个
  2. 计算范围的大小

    std::size_t sz = std::distance(iterators.first, iterators.second);

  3. 现在生成一个随机索引:

    std::size_t idx = std::rand() % sz;//愚蠢的例子

  4. 将迭代器移动到第 idx 位置:

    std::advance(iterators.first, idx);

现在 iterators.first 指向一个随机的哺乳动物。

关于c++ - 为 Multimap 中的特定键选择随机元素,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11431631/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com