我在循环中调用函数'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);
其中comk
是std::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