【发布时间】:2020-12-17 14:44:45
【问题描述】:
所以以前我只有一个需要查找的键,所以我可以使用地图:
std::map <int, double> freqMap;
但现在我需要查找 2 个不同的键。我正在考虑使用带有 std::pair 的向量,即:
std::vector <int, std::pair<int, double>> freqMap;
最终我需要查找两个键以找到正确的值。有没有更好的方法来做到这一点,或者这是否足够有效(将有大约 3k 个条目)。此外,不确定如何使用第二个键(std::pair 中的第一个键)进行搜索。是否根据第一个密钥找到该对?基本上我可以通过以下方式访问第一个键:
freqMap[key1]
但不确定如何迭代并找到该对中的第二个键。
编辑:好的,添加用例进行说明:
我需要根据 2 个键、一个多路复用器选择和一个频率选择来查找一个 val。原始数据如下所示:
Mux, Freq, Val
0, 1000, 1.1
0, 2000, 2.7
0, 10e9, 1,7
1, 1000, 2.2
1, 2500, 0.8
6, 2000, 2.2
【问题讨论】:
-
你为什么说两个键,却用
std::pair作为值?当您说您需要查找两个键时,您的意思是您需要访问给定任何一个键的值,还是需要知道两个键才能找到该值? -
请举例说明您想做什么。我觉得描述有点混乱。
-
是的,我需要两个键才能找到值。我正在考虑使用对 (int) 中的第一个元素作为第二个键,而 double 将是我想要返回的值。
-
那为什么不把 Key 设为
pair<int, int>呢?即有一个vector<pair<pair<int,int>, double>>。在这种情况下,你也可以map<pair<int,int>, double>
标签: c++ vector find key-value std-pair