如何从multimap中获取冗余项
how to redundant item from a multimap
我有一些文件,像下面我需要删除一个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
…
//保留字符串键并计算下一列的平均值;
i have
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(){},它看起来像我只迭代一次?如何遍历所有的交互器fullfill
multimap<string,struct1> ::iterator i = m. find(*ip) && i != m.end() ;
非常感谢!
您可以使用equal_range
函数,该函数将为您提供一对迭代器,用于计算平均值的范围
您需要使用equal_range
,如:
equal_range(*ip);
相关文章:
- 如何擦除冗余输入?
- 使用提升几何缓冲区缩放多边形时的冗余折点
- 我应该担心冗余声明吗?
- Qt的slot(?)将冗余命名空间插入连接
- 方法冗余移动调用的移动语义
- 使用 llvm 和本地值编号算法擦除冗余表达式
- 优化堆上创建的冗余变量
- 如何消除访客模式冗余?
- 表达式模板需要冗余重载
- C++,处理多个构造函数重载和冗余代码
- 使用模板基类消除工厂类派生类冗余的干净方法
- 连接两个文件时如何避免冗余尾随换行符?
- CMake:修改共享库时的冗余链接
- 提升精神 X3:"属性没有预期的大小"冗余
- 如何简化此冗余C++代码?
- 是``if`语句''在modulo之前和分配操作之前的冗余
- 使用最终类说明符时,最终函数说明符是否冗余?
- 简化冗余std :: array初始化,当时没有constexpr构造函数
- 尝试使用 OpenMP 并行化递归函数的冗余计算
- 如何从multimap中获取冗余项