如何创建pair,从list <int>到map </int>

时间:2014-02-05 01:30:57

标签: c++

我在循环中调用函数'createP'。在每次调用中,我将列表发送为:'list l',id(整数)和index(整数)。调用createP后,我将索引递增1。

createP函数中:如果list<int> l

中的项目,我的循环等于数字
for (list<int>::iterator it = l.begin(); it != l.end(); ++it)

在这个循环中我做:

   comk[index].push_back(*it);  

其中comkstd::map <int, vector <int>> comk;

的地图

最后,我得到了:

 comk[0]= (0, list of items)
 comk[1]= (1, list of items)

等等。 e.g。

 comk[0]= (0, (1,2,7))
 comk[1]= (1, (3,8))

等等。

相反,我想创建comk,如:

 comk[indx]=(list of pairs, the value of these pairs )

其中每对包含:(id,列表中的一项):比如说id = 3,然后是

 comk[0]=( ((3,1), (3,2), (3,7)), the `value` of these pairs )

这些对的值,=每对值的总和。

我可以从另一张地图Mymap获取这些对的值:

((1,3), 3)
((2,3), 1)
((3,7), 7)
((4,2), 2)
((8,1), 1)

对的顺序(第一个条目,第二个条目)并不重要

最后,我希望得到这样的结果:

comk[0]=( ((3,1), (3,2), (3,7)), 11 )
comk[1]=( ((1,3), (1,8)), 4)

我尝试将compk定义为:

std::map< vector< pair< int, int> >, int> comk; 

++Kcom[std::make_pair(first, *it)];

旁边的语法错误:

++Kcom[std::make_pair(first, *it)];

我不知道如何从Mymap

获取对的值

0 个答案:

没有答案