编了一个小程序,对STL算法中的sort()和unique()进行了测试,发现unique()输出结果不正确。程序如下:
#include <iostream>
#include <algorithm>
#include <vector>
using namespace std;
int main()
{
int array[8]={1,5,4,5,3,100,2,100};
vector<int> ivec(array,array+8);
cout<<"元素数据"<<endl;
for(vector<int>::iterator iter=ivec.begin();iter!=ivec.end();++iter)
cout<<*iter<<'\t';
cout<<endl;
sort(ivec.begin(),ivec.end());
cout<<"经sort()排序后"<<endl;
for(vector<int>::iterator iter=ivec.begin();iter!=ivec.end();++iter)
cout<<*iter<<'\t';
cout<<endl;
cout<<"经unique()排序后"<<endl;
vector<int>::iterator it=unique(ivec.begin(),ivec.end());
for(vector<int>::iterator iter=ivec.begin();iter!=ivec.end();++iter)
cout<<*iter<<'\t';
cout<<endl;
cout<<"输出重复数字"<<endl;
for(vector<int>::iterator iter=it;iter!=ivec.end();++iter)
cout<<*iter<<'\t';
cout<<endl;
return 0;
}
程序结果如下:
重复数字应该是5好和100,但结果怎么只剩100了?