标题:set排序,改变默认排序 从大到小排
#include <iostream>
using namespace std;
#include<set>
//默认 从小到大
//改变 从大到小
//set 容器排序
class MyCompare
{
public:
bool operator()(int v1,int v2)
{
return v1 > v2;
}
};
//
void test01()
{
//默认从大到小
set<int>s1;
s1.insert(10);
s1.insert(40);
s1.insert(20);
s1.insert(30);
s1.insert(50);
for (set<int>::iterator it = s1.begin(); it != s1.end(); it++)
{
cout << *it << " ";
}
cout << endl;
//指定规则 从大到小
set<int, MyCompare >s2;
s2.insert(10);
s2.insert(40);
s2.insert(20);
s2.insert(30);
s2.insert(50);
//printSet(s2);
for (set<int,MyCompare>::iterator it = s2.begin(); it != s2.end(); it++)
{
cout << *it << " ";
}
cout << endl;
}
int main()
{
test01();
system("pause");
return 0;
}
报错:错误 C3848 具有类型“const MyCompare”的表达式会丢失一些 const-volatile 限定符以调用“bool MyCompare::operator ()(int,int)”
解决:bool operator()(int v1,int v2)const//要加const
class MyCompare
{
public:
bool operator()(int v1,int v2)const
{
return v1 > v2;
}
};