根据报错信息,这是因为 operator() 函数需要被声明为 const 成员函数。在自定义的比较类 Mycmp 中,将 operator() 声明为 const 成员函数即可解决该错误。
请修改代码如下:
#include <iostream>
#include <set>
using namespace std;
class Mycmp {
public:
bool operator()(int val1, int val2) const {
return val1 > val2;
}
};
int main() {
set<int, Mycmp> s;
s.insert(21);
s.insert(11);
s.insert(41);
s.insert(25);
s.insert(81);
for (set<int, Mycmp>::iterator it = s.begin(); it != s.end(); it++) {
cout << *it << " ";
}
cout << endl;
return 0;
}
重新编译运行程序,应该就不会再出现相同的错误了。
内容由零声教学AI助手提供,问题来源于学员提问




