unique算法函数去重示例

来源:互联网 发布:angularjs2 定义数组 编辑:程序博客网 时间:2024/05/21 17:38

c++ STL中的unique函数用来对容器中相邻的重复元素进行去重操作,使用时必须要#include <algorithm>,常与sort函数搭配使用。值得一提的是unique函数并不会真正剔除容器中的重复元素,而是会返回一个迭代器,容器中该迭代器之前的元素都是经过去重处理的。与sort函数类似,该函数也可自定义“等于”的比较函数。

下面以利用unique函数给vector中元素去重为例:

#include <iostream>#include <vector>#include <algorithm>using namespace std;int DataProcess(int num, int* inputArray, int* outputArray){vector<int> elements;for (int index = 0; index < num; index++){elements.push_back(inputArray[index]);}sort(elements.begin(), elements.end());vector<int>::iterator iterInvalid;iterInvalid = unique(elements.begin(), elements.end());elements.erase(iterInvalid, elements.end());for (int index = 0; index < elements.size(); index++){outputArray[index] = elements[index];}return 0;}int main(){int array[6] = { 1, 2, 3, 3, 2, 1 };int output[6];DataProcess(6, array, output);system("pause");return 0;}
在上面的代码中可以看到,为了实现真正的去重,使用了vector中的erase函数来将返回的迭代器之后的数据移除。