用STL中的list对象设计一个函数删除链表中的所有重复元素

我写的代码是这样的#include<iostream>#include<list>#include<algorithm>usingnamespacestd;//////重... 我写的代码是这样的
#include <iostream>
#include <list>
#include <algorithm>
using namespace std;

//////重载list<T>的输出操作符////////////
template <typename T>
ostream & operator<<(ostream & out,const list<T> & alist)
{
for(list<T>::const_iterator i = alist.begin();i!=alist.end();i++)
out<<*i<<" ";
return out;
}

//////主函数///////////////
int main()
{
list<int> array;

int num[7]={2,53,6,46,53,2,10}; //给list赋值
for(int i=0;i<7;i++)
{
array.push_back(num[i]);
}

list<int>::iterator arr; //迭代器
list<int>::iterator arrtemp;
array.sort(); //给链表排序

for(arr=array.begin();arr!=array.end();)
{
arrtemp==arr++;
if(*arr==*arrtemp)
{
arr==array.erase(arr);
}
else
arr++;
}

cout<<"New array is : "<<array<<endl;

return 0;
}
编译没有错误但是运行时不行,麻烦各位大大帮我看看错在哪里了
展开
 我来答
wwwgmc
2014-11-14 · TA获得超过321个赞
知道小有建树答主
回答量:247
采纳率:0%
帮助的人:170万
展开全部

arrtemp==arr++;之后要判断一下arr!=array.end(),如果arr是end()了,则后面的 *arr 会崩溃


修改如下:

	for(arr=array.begin();arr!=array.end();)
{
arrtemp=arr++;
if(arr==array.end())
break;
if(*arrtemp==*arr)
{
array.erase(arrtemp);
}
}
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式