为什么以下程序不起作用? 我该如何解决?
#include <iostream>
#include <set>
using namespace std;
class K {
private:
long a;
};
int main ()
{
K a;
set<K> b;
b.insert(a);
return 0;
}
答案 0 :(得分:6)
std::set
需要对元素进行排序。它要求您可以根据某些顺序比较其元素。
为您的类operator <
添加K
或将第二个模板参数(比较器)提供给确定两个set
实例之间排序的K
类。
重载operator <
非常简单:
bool operator <(K const& x, K const& y) {
return x.a < y.a;
}
这意味着当且仅当其成员K
小于另一个时,a
的一个实例少于另一个实例。
答案 1 :(得分:0)
set要求你的类具有运算符&lt;定义。例如:
class K {
public:
bool operator< (const K& other) const {
return this->a < other.a;
}
private:
long a;
};