以最新的C 的类型安全方式从枚举中随机选择元素
Randomly select an element from an enumeration in a type-safe way with newest C++
是否有一种方法可以以类型安全的方式从枚举中随机选择元素?
我能找到的最好的方法是将终结值作为枚举的最后一个元素引入终结值,因此您知道有多少个值,然后在您施放的适当范围内生成一个随机整数到枚举。但是终结器值并不代表任何内容,因此您具有无效的枚举值,这不是类型的安全。在最新的C 标准中,有更好的方法吗?
这似乎是std::map
std::map<std::string, const int> nicer_enum {{"Do", 3}, {"Re", 6}, {"Mi", 9}};
std::cout << nicer_enum["Re"] << 'n'; // 6
auto elem = nicer_enum.cbegin();
std::srand(std::time(nullptr));
std::advance(elem, std::rand() % nicer_enum.size());
std::cout << elem->second << 'n'; // 3, 6 or 9
for (const auto &kv : nicer_enum)
std::cout << kv.first << ": " << kv.second << ' '; // Do: 3 Mi: 9 Re: 6
std::cout << 'n';
相关文章:
- 随机选择 2 个不在范围内的整数
- 在C++中随机选择子类
- 如何从图形的邻接列表表示中随机选择边缘
- C++ 随机选择标准::矢量<标准::矢量的非空元素> >
- 以最新的C 的类型安全方式从枚举中随机选择元素
- C 通过随机选择其元素从两个元组制成元组
- 最佳的c++方式来随机选择设置位在位集中的位置
- 随机选择一个 0 到 8 之间的数字,直到没有数字可以选择,然后重新开始
- 有什么方法可以制作一个程序,随机选择10-20个字符串并用C++向用户显示
- 为连接的OMNeT++门分配随机选择但匹配的参数
- 从STL矢量的真值中随机选择索引
- 添加函数数组并随机选择其中一个
- 随机选择两个值
- 如何存储需要随机选择和删除的数据,矢量,哈希表或其他
- 就地随机选择算法
- 随机选择字典中的单词
- 从包含n个元素的向量中随机选择m个元素
- 如何在给定概率下随机选择数字
- 一个有效的方法,随机选择std::vector的所有元素正好一次而不重新洗牌
- 从文本文件中随机选择K行