gpt4 book ai didi

c++ - 如何从多重 map 中删除项目

转载 作者:行者123 更新时间:2023-11-28 07:48:29 24 4
gpt4 key购买 nike

我有一些像下面这样的文件,我需要删除一个 multimap

 3KHJG 76  238
3KHJG 86 238
3GDMB 31 244
3GDMB 31 247
3GDMB 31 251
3KOFA 21 336
3KOFA 36 263

....

我需要一个文件,例如:

 3KHJG 81  238
3GDMB 31 247

.....

//保留字符串键并计算下一列的平均值;

我有

 typedef struct S{
int v1;
int v2;
...
}struct1;

struct1 s1;
//I parsed the old file and put them into a multimap and a set<string>;
multimap <string, s1> m;
multimap <string, s1>::iterator i;
set <string> pa_set;
int sumv1, sumv2;
int avgv1, avgv2;
for (set<string>:: iterator ip= pa_set.begin(); ip !=pa_set.end(); ip++)
{

multimap <string, struct1> ::iterator i = m.find(*ip);

int cnt=m.cout(*ip);
if (ip != m.end())
{
v1 =i->second.v1;
v2 =i->second.v2;
sumv1+=v1;
sumv2+=v2;
i++;
}

//calculate the avgv1 and avgv2;
}

但是,如果我使用 if (){} 看起来我只迭代一次? 我怎样才能通过所有的 interators fullfill

    multimap<string,struct1> ::iterator i = m. find(*ip) && i != m.end() ;        

非常感谢!

最佳答案

您可以使用 equal_range函数,它将为您提供一对迭代器,以计算平均值。

关于c++ - 如何从多重 map 中删除项目,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14346848/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com