我有一个以下列方式声明的数据结构
struct foo{
int first;
int second;
};
然后我将类型foo
的元素添加到集合中。
过了一会儿,我会检查我的foo myfoo
是否在集合中。我的问题是这是怎么做到的?目前我正在尝试
myset.count(myfoo)
然而,编译器告诉我,我需要定义'<'操作员,我不确定如何或为什么需要这样做。为什么我知道只做一个
inline bool operator==
定义它需要什么'<'为?
答案 0 :(得分:2)
std::set
是订购的容器。您必须提供元素的排序。默认情况下,std::set<T>
将使用bool operator< (T, T)
(通过std::less<T>
),但任何满足Compare的类型都是允许的。
您的结构与std::pair<int, int>
具有相同的数据成员,但缺少为pair
定义的所有操作。您可以添加所需的操作,也可以使用pair