当需要使用greater<int>时,在头文件里需要添加#include<functional>
-
#include<iostream> -
#include<vector> -
#include<set> -
#include <functional> -
using namespace std; -
int main() -
{ -
vector<int> data{1,4,3,8}; -
//vector<int> d1(data.begin()+1, data.begin() + 3); -
multiset<int, greater<int> > test; -
for (int i = 0; i < data.size(); i++) -
{ -
test.insert(data[i]); -
} -
return 0; -
}
得到test的结果为 8,4,3,1。
所以,添加greater<int> 会使得排序为降序排序。即更大的在前面。
一般不加第二个参数,会默认为是less<int>,即按升序排序。
注意:multiset和set会对插入的元素进行自动排序,比如下面我使用set将0,10,8,9, 1, 5, 2插入,然后打印set,看出来的结果是,这说明set会对插入其中的元素进行自动排好序。
程序:
#include<iostream>
#include<set>
#include<vector>
#include<functional>
using namespace std;
int main()
{
vector<int>input_data1 = { 0,10,8,9,1,5,2};
set<int, greater<int>>save1;
vector<int>input_data2{0,1,1,10,10,7,6,9,11,2};
multiset<int, greater<int>>save2;
for (vector<int>::iterator it = input_data1.begin(); it != input_data1.end(); it++)
save1.insert(*it);
for (set<int, greater<int>>::iterator it = save1.begin(); it != save1.end(); ++it)
cout << *it << " ";
cout << endl;
for (vector<int>::iterator it = input_data2.begin(); it != input_data2.end(); it++)
save2.insert(*it);
for (set<int, greater<int>>::iterator it = save2.begin(); it != save2.end(); ++it)
cout << *it << " ";
cout << endl;
system("pause");
return 0;
}