C++ unique

我想要用unique 将s中重复(>1个)的元素复制到s3中,为什么这样写没办法实现
#include<iostream>
#include<list>
#include<algorithm>
#include<iterator>
using namespace std;
int main()
{
int a[]={1,1,3,2,1,4,4,5,6,7};
list<int> s(a,a+10),s3;
s.sort();
list<int>::iterator j=unique(s.begin(),s.end());
cout<<s.size()<<endl;
while(j!=s.end())
{
s3.push_back(*j);
j++;
}
list<int>::iterator i1=s3.begin();
while(i1!=s3.end())
{
cout<<*i1<<endl;
i1++;
}

getchar();
return 0;
}

第1个回答  2017-07-31
一、从单词来看:
这两个词从词义上应该很了区分的.
distinct:
1、清楚,清晰的;明白,明显的
2、截然不同的,有区别的.些是和form连用
unique:
1、独一无二的,惟一的
2、独特的,罕见的
二、从SQL语言来看:
SQL
语句可返回唯一不同的值
A.
UNIQUE是完整性约束里的一种,如果某列的值需要是唯一的那么就添加UNIQUE约束
Distinct是在查询时用的,若在SELECT的列选择列表中的某列说明为Distinct,那么查询出来的结果里,该列不会出现重复的值.
B.
unique是distinct的同义词,功能完全相同。
distinct是标准语法,其他数据库
sql
server,db2,oracle,sybase,mysql等都支持。
unique,informix数据库认识,其他数据库有的认识,有的不认识。
C.
用UNIQUE和DISTINCT查找不重复的行,
语法好像是一样的,结果也是一样的,
他们究竟有什么区别?
别人的回答是:一样的。
总之,效果是一样的,但是还是按照习惯和规章来吧。select
就用distinct。
在SQL语法里面,有unique和distinct两个关键字,unique是distinct的同义词,功能完全相同。
distinct是标准语法,其他数据库 sql
server,db2,oracle,sybase,mysql等都支持。
unique,informix数据库认识,其他数据库有的认识,有的不认识。以后方便数据库移植,推荐使用distinctDistinct|Unique返回select 出来的重复数据的一笔(distinct/unique
可认为互为同义词)重复行数数据必须和select 出来的每一个表达式匹配。本回答被网友采纳
相似回答