删除算法3 unique 将连续相同的数删除

来源:互联网 发布:企业数据标准化 编辑:程序博客网 时间:2024/05/16 13:01
#include <iostream>#include <algorithm>#include <list>#include <set>#include <functional>#include <iterator>using namespace std;bool differenceOne(int elem1, int elem2){return elem1 + 1 == elem2 || elem1 - 1 == elem2;}int main(){int source[] = { 1, 5, 5, 6, 8, 9, 2, 2, 2, 5, 4, 4, 4, 1, 3, 5, 2 };int sourceNum = sizeof(source) / sizeof(source[0]);list<int> ilist;copy(source, source + sourceNum, back_inserter(ilist));for (list<int>::iterator iter = ilist.begin(); iter != ilist.end(); ++iter)cout << *iter << ' ';cout << endl; cout << endl << endl;list<int>::iterator pos;pos = unique(ilist.begin(), ilist.end()); // unique()是将连续的重复的数删除掉,for (list<int>::iterator iter = ilist.begin(); iter != pos; ++iter)cout << *iter << ' ';cout << endl;copy(source, source + sourceNum, ilist.begin());for (list<int>::iterator iter = ilist.begin(); iter != ilist.end(); ++iter)cout << *iter << ' ';cout << endl;pos = unique(ilist.begin(), ilist.end(),greater<int>()); // unique()是将连续的重复的数删除掉,//greater<int>()这个是比较一个数与前边的数进行比较,要是比前边的小就将其删除掉,要是比前边的数大继续用这个大的数与下一个数进行比较,// 最后排出来的结果是从小到大排序的,for (list<int>::iterator iter = ilist.begin(); iter != pos; ++iter)cout << *iter << ' ';cout << endl;cout << endl;copy(source, source + sourceNum, ilist.begin());for (list<int>::iterator iter = ilist.begin(); iter != ilist.end(); ++iter)cout << *iter << ' ';cout << endl;unique_copy(ilist.begin(), ilist.end(), ostream_iterator<int>(cout, " "));cout << endl;cout << endl;//                                                                         这是谓词unique_copy(ilist.begin(), ilist.end(), ostream_iterator<int>(cout, " "),differenceOne);cout << endl;return 0;}

0 0
原创粉丝点击