【发布时间】:2021-06-17 12:21:57
【问题描述】:
在 C++ 中,unordered_map 和 map 是从地图中搜索关键字的好工具。
我可以建一个map,key是date,value是double(或者我自己定义的struct)。
但我想要一个范围图,这意味着键是一个范围,例如:
#inlcude <map>
m[20190101] =3;
m[20201201] = 4.
cout << m[20200101]; // i want this can return me 3. because 20200101 is
// lower-close to 20190101
我该如何实现?
【问题讨论】:
-
似乎是一厢情愿。
-
有一个问题是地图的键应该识别一个且只有一个元素。但是,如果您对地图中的范围从不重叠感到满意,那么自定义比较器应该可以解决问题,尽管它可能难以实现。
-
不在标准库中。您必须自己编写代码。但是你会如何使用这样的地图呢?您能否提供您希望用于设置值并稍后检索它们的代码?
-
@Galik 请看更新,我正在设计一个股票交易系统,我需要一个很小的数据库来保存每只股票的交易费用,费用很少改变(10年,它只改变不到 10 次),这意味着构建一个 [date, value] 非常浪费,我需要这么快,因为我需要大量搜索。
-
为此使用地图毫无意义。存储与该值配对的已排序日期数组,然后使用二分搜索找到您的日期与
std::lower_bound或类似的。
标签: c++ stl unordered-map