标签:list sort unique_copy
题目:
算法标准库定义了一个名为unique_copy的函数,其操作与unique类似,唯一的区别在于:前者接受第三个迭代器实参,用于指定复制不重复元素的目标序列。编写程序,使用unique_copy将一个list对象中不重复的元素复制到一个空的vector容器中。
原有答案如下:
#include <iostream> #include <iterator> #include <vector> #include <algorithm> #include <list> using namespace std; int main() { int array[]={1,2,3,4,100,5,100}; list<int> ilst(array,array+7); vector<int> ivec; //将list对象ilst不重复的元素复制到一个空vector对象ivec中 unique_copy(ilst.begin(),ilst.end(),back_inserter(ivec)); //输出vector容器 for(vector<int>::iterator iter=ivec.begin();iter!=ivec.end();++iter) cout<<*iter<<" "; cout<<endl; return 0; }
结果如下图:
很明显,结果并没有去除重复元素,unique_copy()没有起作用。为什么呢?分析如下:
#include <iostream> #include <iterator> #include <vector> #include <algorithm> #include <list> using namespace std; int main() { int array[7]={1,2,3,4,100,5,100}; list<int> ilst(array,array+7); vector<int> ivec; ilst.sort();//使用list容器提供的自己的排序函数sort() //在使用unique_copy()之前排序是必不可少的 //将list对象ilst不重复的元素复制到一个空vector对象ivec中 unique_copy(ilst.begin(),ilst.end(),back_inserter(ivec)); //输出vector容器 for(vector<int>::iterator iter=ivec.begin();iter!=ivec.end();++iter) cout<<*iter<<'\t'; cout<<endl; return 0; }结果如下图,这样就正确了
标签:list sort unique_copy
原文地址:http://blog.csdn.net/flyingbird_sxf/article/details/42042469