在C ++中具有键值对:<val1,val2 =“”>作为键<frequency>作为值

时间:2018-06-25 04:28:52

标签: c++

我有一个csv文件,如下所示:

ID L1 L2 L3 L4 X Y Z
1  3   3  1  2 f f x
1  3   3  3  2 g f f
2  3   4  4  3 o p q

我想集中注意保持(id,Li)的位置,其中i = 1、2、3、4作为键,出现的频率作为值,我想使用显示的c ++映射创建一个表,

<1, 3> appeared 5 (i.e. where ever 1 was there 3 appeared in L1 and/or L2 L3 L4)
<1, 1> appeared 1
<1, 2> appeared 2
<2, 3> appeared 2
<2, 4> appeared 2

如果有一个新条目,则将其添加,并对旧条目进行计数。

我是C ++的新手。我能够使用dict在python中实现此功能。在C ++中使用std::map似乎很简单,但是我不确定如何将其应用于这种情况!

1 个答案:

答案 0 :(得分:1)

如果您希望将2个整数存储为键,将1个存储为频率,这就是您的操作方式

std::map<std::pair<int, int>, int>

在上一行:

pair< <int,int>, int> 

可以理解为对<键,值>。

在搜索特定键时,您将需要一对int。 例如:如果您已存储<1,2> = <3> 您将必须使用键= <1,2>

进行搜索

编辑:

#include <iostream>
#include <map>
using namespace std;

int main()
{
   std::map<std::pair<int, int>, int> freq_data;

   freq_data[make_pair(1,3)] = 5;
   freq_data[make_pair(1,1)] = 1;
   freq_data[make_pair(1,2)] = 2;

   cout<<freq_data.at(make_pair(1,3))<<endl; 

   return 0;
}