【发布时间】:2021-02-18 20:48:22
【问题描述】:
我正在寻找像std::unordered_map 这样不使用任何动态分配的容器。我相信任何具有固定数量的键的关联容器都会出现这种情况,甚至是在编译时必须选择的键。
我不是在寻找 constexpr 或编译时哈希映射,因为我希望能够更新映射中的值。
示例用例:
FixedCapacityMap<std::string_view, int> fruits {
{"n_apples", 0},
{"n_pairs", 0}
}
fruits["n_apples"] += 1;
fruits["n_pairs"] += 1;
有谁知道这样的库是否存在,如果没有,如何实现这样的东西?
【问题讨论】:
-
“我不是在寻找 constexpr 或编译时哈希映射,因为我希望能够更新映射中的值。” -- 如果您只想更新值而不是键,那么您可以有一个编译时映射,它将键映射到对实际值的某种引用。这些引用可以是值数组、指针或 C++ 引用的索引。这样,您可以在不实际更改地图的情况下更改值。
-
在编译时是否知道密钥?另外,我们在谈论多少个键(数量级)?
-
密钥在编译时是已知的,并在构造函数中提供。我正在寻找通用的东西,适合不同大小的键,但在我的用例中,它可能是 10 到 200 个键。
标签: c++ dictionary associative-array stdmap