【发布时间】:2021-11-18 06:14:10
【问题描述】:
我有一个固定数量 (5) 的结构向量(结构是在运行时插入的,数量可以变化)。
我有一个enum class,它用作查找的键。例如
enum class CountryCode {
kUS,
// ...other 4
};
const std::vector<SomeStruct>& get_by_country_code(CountryCode cc);
我可以将std::unordered_map<CountryCode, std::vector<SomeStruct>, CustomHash> 与自定义哈希一起使用,但我认为对于固定大小的集合来说不值得,因为在运行时之前就知道了排序。
存储这 5 个向量并通过 enum 值进行查找的最有效方法是什么?
我也在考虑std::tuple,但在我的情况下,值并不是异类的。
【问题讨论】:
-
如果枚举数有默认值,就不能用数组吗?
-
@DavisHerring 向量数组是否被认为是一种好习惯?
-
根据定义,对于具有快速索引查找的固定大小的对象集合,它是适当的数据结构。如果你想花哨,你可以把它们放在
std::array,我猜? -
为什么需要使用自定义哈希? 散列操作适用于 KEY,而不是 VALUE。 枚举基本上是具有默认散列操作的整数,这非常接近于无操作。所以 unordered_map
` 绝对是要走的路。 -
@senloa - 它绝对转换为 int。