erase()函数会返回它删除的下一个元素
所以删除后你的迭代器j编程野的了即 j失效
安全办法
j=colour.erase(j);j++
由于erase之后,vector之后的内存重新分配,j指针再++就会出错。
vector
vector
int dis = 0;
while(i!=colour.end()-1)
{
j=i+1;
while(j!=colour.end())
{
if ((*i).compare(*j)==0)
{
dis = j-i;
colour.erase(j);
j=i+dis;
}
else
{
j++;
}
}
i++;
}
#include
using namespace std;
int main()
{
vector
A.push_back(1);
A.push_back(2);
A.push_back(1);
A.push_back(2);
sort(A.begin(),A.end());
vector
x = unique(A.begin(),A.end());
for(t=A.begin(); t!=x; t++) //print 1 2
printf("%d\n",*t);
return 0;
}