利用multiset将一个链表中的重复数据累加
时间:2011-07-13
来源:互联网
利用multiset将一个链表中的重复数据累加。
#include<iostream>
#include<list>
#include<set>
#include<numeric>
#include<iterator>
#include<algorithm>
using namespace std;
void main()
{
list<int>l;
list<int>l_Result;
l.push_back(1);
l.push_back(2);
l.push_back(2);
l.push_back(4);
l.push_back(4);
l.push_back(90);
l.push_back(8);
l.push_back(2);
l.sort();
cout<<"原始链表是:"<<endl;
copy(l.begin(),l.end(),ostream_iterator<int>(cout,"\t"));
cout<<endl;
multiset<int>myset(l.begin(),l.end());
pair<multiset<int>::iterator ,multiset<int>::iterator >range;
cout<<"装入set后:"<<endl;
copy(myset.begin(),myset.end(),ostream_iterator<int>(cout,"\t"));
cout<<endl;
multiset<int>::iterator it=myset.begin();
while(it!=myset.end())
{
int count=myset.count(*it);
if(count>1)
{
range=myset.equal_range(*it);
int n=accumulate(range.first,range.second,0);
l_Result.push_back(n);
myset.erase(range.first,range.second);
it=myset.begin(); //这句是关键
}
else
{
it++;
}
}
cout<<"accumulate l_Result:"<<endl;
copy(l_Result.begin(),l_Result.end(),ostream_iterator<int>(cout,"\t"));
cout<<endl;
cout<<"multiset 去除重复后:"<<endl;
copy(myset.begin(),myset.end(),ostream_iterator<int>(cout,"\t"));
cout<<endl;
for(it=myset.begin();it!=myset.end();it++)
{
l_Result.push_back(*it);
}
cout<<"最终结果是:"<<endl;
copy(l_Result.begin(),l_Result.end(),ostream_iterator<int>(cout,"\t"));
cout<<endl;
system("pause");
}
#include<iostream>
#include<list>
#include<set>
#include<numeric>
#include<iterator>
#include<algorithm>
using namespace std;
void main()
{
list<int>l;
list<int>l_Result;
l.push_back(1);
l.push_back(2);
l.push_back(2);
l.push_back(4);
l.push_back(4);
l.push_back(90);
l.push_back(8);
l.push_back(2);
l.sort();
cout<<"原始链表是:"<<endl;
copy(l.begin(),l.end(),ostream_iterator<int>(cout,"\t"));
cout<<endl;
multiset<int>myset(l.begin(),l.end());
pair<multiset<int>::iterator ,multiset<int>::iterator >range;
cout<<"装入set后:"<<endl;
copy(myset.begin(),myset.end(),ostream_iterator<int>(cout,"\t"));
cout<<endl;
multiset<int>::iterator it=myset.begin();
while(it!=myset.end())
{
int count=myset.count(*it);
if(count>1)
{
range=myset.equal_range(*it);
int n=accumulate(range.first,range.second,0);
l_Result.push_back(n);
myset.erase(range.first,range.second);
it=myset.begin(); //这句是关键
}
else
{
it++;
}
}
cout<<"accumulate l_Result:"<<endl;
copy(l_Result.begin(),l_Result.end(),ostream_iterator<int>(cout,"\t"));
cout<<endl;
cout<<"multiset 去除重复后:"<<endl;
copy(myset.begin(),myset.end(),ostream_iterator<int>(cout,"\t"));
cout<<endl;
for(it=myset.begin();it!=myset.end();it++)
{
l_Result.push_back(*it);
}
cout<<"最终结果是:"<<endl;
copy(l_Result.begin(),l_Result.end(),ostream_iterator<int>(cout,"\t"));
cout<<endl;
system("pause");
}
作者: aliec 发布时间: 2011-07-13
代码展示?
作者: JingTianWen 发布时间: 2011-07-13
哪里看不懂吗,关键的一句话也标出来了。
作者: aliec 发布时间: 2011-07-13
相关阅读 更多
热门阅读
-
office 2019专业增强版最新2021版激活秘钥/序列号/激活码推荐 附激活工具
阅读:74
-
如何安装mysql8.0
阅读:31
-
Word快速设置标题样式步骤详解
阅读:28
-
20+道必知必会的Vue面试题(附答案解析)
阅读:37
-
HTML如何制作表单
阅读:22
-
百词斩可以改天数吗?当然可以,4个步骤轻松修改天数!
阅读:31
-
ET文件格式和XLS格式文件之间如何转化?
阅读:24
-
react和vue的区别及优缺点是什么
阅读:121
-
支付宝人脸识别如何关闭?
阅读:21
-
腾讯微云怎么修改照片或视频备份路径?
阅读:28