如何爲多圖中的特定鍵選擇一個隨機元素。例如:在Multimap中爲特定鍵選擇隨機元素
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.
但我相信有一個更好的解決方案...也許使用迭代器作爲數字..
感謝
添加一個隨機數(在返回範圍的開始和結束之間的距離)是不夠的? – Nim 2012-07-11 11:29:46
不知道如何獲得'iterators.first'到一個'int'來做隨機... – Ross 2012-07-11 11:34:02
計算兩個返回的迭代器之間的'std :: distance()'並使用一個RNG給你一個隨機數你可以'std :: advance()'迭代器('iterators.first') - 給你一個隨機的哺乳動物。 – Nim 2012-07-11 11:37:31