将一组数从小到大排列并且剔除重复项(离散化)
将一组数从小到大排列并且剔除重复项(离散化)
这个功能涉及到一个数据结构(vector)和三个函数:
1:sort,将这组数字从小到大排列;
2:unique,将相邻且重复的数放到vector的尾部,然后返回指向第一个重复元素的迭代器(需要注意的是,被放在尾部的数据有时会产生变化,所以不能继续使用了,需要废弃掉);
3:erase,擦除重复的数据。
示例代码如下:
1 #include "stdafx.h" 2 #include <iostream> 3 #include <algorithm> 4 #include <vector> 5 using namespace std; 6 7 int main() 8 { 9 vector<int> v; 10 cout << "please input the number of vector's element" << endl; 11 int number; 12 cin >> number; 13 for (int i = 0; i < number; i++) 14 { 15 int temp; 16 cin >> temp; 17 v.push_back(temp); //在vector尾部加入一个数据 18 } 19 sort(v.begin(),v.end()); 20 v.erase(unique(v.begin(), v.end()), v.end()); 21 for (int i = 0; i < v.size(); i++) 22 { 23 cout << v[i] << " "; 24 } 25 system("pause"); 26 return 0; 27 }