STL algorithm 之 unique 函数的用法
来源:互联网 发布:海牙国际军事法庭 知乎 编辑:程序博客网 时间:2024/06/04 22:38
unique的内部实现等价于:
template <class ForwardIterator> ForwardIterator unique ( ForwardIterator first, ForwardIterator last ){ ForwardIterator result=first; while (++first != last) { if (!(*result == *first)) // or: if (!pred(*result,*first)) for the pred version *(++result)=*first; } return ++result;}
仔细一看就知道,它并不是帮你直接把一个数组中所有重复的元素除去,而是对数组扫描一次,只看当前元素和前面一个元素,如果当前值和前面的值相等,那么跳过,否则就把这个值算上,迭代器递增,最后返回给你一个位置,表示我扫描到多少个当前值与其前面一个元素值不同的元素。
unique使用的前提条件:必须先对所需要进行unique操作的数组排序,然后再使用unique。
unique函数实现的只是把不同的元素“unique”放到数组的前面,重复的元素都放在数组的后面。
unique函数的返回值为第一个重复元素的位置。
另外,unique函数可以接受两个参数(数组的开头,数组的末尾),也可以接受三个参数(数组的开头,数组的末尾,两个元素的比较(即定义怎样算元素相等))
实例:
// resizing vector#include <iostream>#include <vector>#include <algorithm>using namespace std;bool myfunction (int i, int j) { return (i==j);}int main () { int myints[] = {10,20,20,20,30,30,20,20,10}; // 10 20 20 20 30 30 20 20 10 vector<int> myvector (myints,myints+9); vector<int>::iterator it; it = unique (myvector.begin(), myvector.end()); // 10 20 30 20 10 ? ? ? ? //尖所指即it的位置 // ^ myvector.erase( it , myvector.end() ); // 第一种去掉末尾的方法 cout << "first: myvector contains:"; for (int i=0;i<myvector.size();i++) cout << " " << myvector[i]; cout<<endl; sort(myvector.begin(),myvector.end());//先排序 it = unique (myvector.begin(), myvector.end(), myfunction); // 使用比较函数,但此处是跟缺省的比较一样的。 myvector.resize( it - myvector.begin() ); // 10 20 30 cout << "second: myvector contains:"; for (it=myvector.begin(); it!=myvector.end(); ++it) cout << " " << *it; cout << endl; return 0;}/*输出:first: myvector contains: 10 20 30 20 10second: myvector contains: 10 20 30*/
- STL algorithm 之 unique 函数的用法
- STL中unique函数的用法
- STL算法 unique的用法
- STL中的Unique的用法
- unique函数的用法
- unique函数的用法
- STL之unique()去重函数
- STL之unique()去重函数
- stl-algorithm用法
- STL之map函数的用法
- (STL)std::unique函数的实现
- unique函数的使用方法(STL库函数)
- STL algorithm算法unique,unique_copy(58)
- STL Algorithm函数列表
- STL-<algorithm>常用函数
- STL:algorithm中排序函数sort(升序排列函数)和reverse(反转排列函数)的简单用法
- stl vector unique函数
- STL-unique()函数
- 关于QSqlDatabase::addDatabase的一个运行时错误
- 双击python脚本使之运行
- nginx tomcat7 memcache设置服务器负载均衡,session共享
- JQuery插件开发初探——结构熟悉
- JQuery插件开发初探——图片轮播
- STL algorithm 之 unique 函数的用法
- Android xliff和字符串资源(Error parsing XML: unbound prefix)
- Hadoop fuse_dfs编译与安装
- Fragment之Creating event callbacks to activity实例
- Android基础——Service IPC通讯(Messenger实现)
- jQuery操作input值总结
- QT程序启动界面的使用
- 添加了Exchange WebService引用找不到ExchangeServiceBinding类
- android实现分组字母索引显示的listview