作者热门文章
- mongodb - 在 MongoDB mapreduce 中,如何展平值对象?
- javascript - 对象传播与 Object.assign
- html - 输入类型 ="submit"Vs 按钮标签它们可以互换吗?
- sql - 使用 MongoDB 而不是 MS SQL Server 的优缺点
当我有类似的事情时,我想到了这个问题
enum Folders {FA, FB, FC};
并想为每个文件夹创建一个容器数组:
ContainerClass*m_containers[3];
....
m_containers[FA] = ...; // etc.
(使用 map 更优雅:std::map<Folders, ContainerClass*> m_containers;
)
但是回到我最初的问题:如果我不想硬编码数组大小怎么办,有没有办法弄清楚文件夹中有多少项目? (不依赖例如 FC
是列表中的最后一项,如果我没记错的话,这将允许类似 ContainerClass*m_containers[FC+1]
的内容。)
最佳答案
没有真正的好方法可以做到这一点,通常你会在枚举中看到一个额外的项目,即
enum foobar {foo, bar, baz, quz, FOOBAR_NR_ITEMS};
那么你可以这样做:
int fuz[FOOBAR_NR_ITEMS];
虽然还是不太好。
但是你当然意识到枚举中的项目数量是不安全的,例如
enum foobar {foo, bar = 5, baz, quz = 20};
项目数为 4,但枚举值的整数值将超出数组索引范围。使用枚举值进行数组索引并不安全,您应该考虑其他选项。
编辑:根据要求,使特殊条目更加突出。
关于c++ - (如何)我可以计算枚举中的项目吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2102582/
我是一名优秀的程序员,十分优秀!