如何在 C++ 中获取 std::map 的随机密钥?使用迭代器?
我不想维护额外的数据结构
std::map
迭代器是双向的,这意味着选择一个随机密钥将是O(n)
。在不使用其他数据结构的情况下,基本上你唯一的选择就是使用std::advance
随机增量begin()
。例如:
std::map<K, V> m;
auto it = m.begin();
std::advance(it, rand() % m.size());
K random_key = it->first;
(或者换掉rand()
与(例如)std::mt19939
如果您有权访问<random>
).
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)