怎样对set容器自定义比较函数?

KingI 2005-08-17 11:34:22
如果定义了一个
struct A
{
int i;
int j;
};

用set装入,set默认的比较函数是less,可对于struct类型需要重新定义一个比较函数,
应该怎样定义?
...全文
423 2 打赏 收藏 转发到动态 举报
写回复
用AI写文章
2 条回复
切换为时间正序
请发表友善的回复…
发表回复
newbiestar 2005-08-17
  • 打赏
  • 举报
回复
给你一个例子

#include <set>
struct A
{
int i;
int j;
bool operator<(A const &ref)const
{
return i < ref.i;
}
bool operator==(A const &ref)const
{
return i == ref.i && j == ref.j;
}
};
int main()
{
A val1 = {1, 2};
A val2 = {2,2};
std::set<A> my_set;
my_set.insert(val1);
my_set.insert(val2);
}

那两个函数要定义成const函数,否则的话调用解析无法通过
newbiestar 2005-08-17
  • 打赏
  • 举报
回复
在A里面定义bool operator <()和bool operator==()就可以了

默认情况下你这个好像没办法放入set吧?什么比较操作都没有,set应该是不允许这样的情况发生的(只要进行插入操作就会在编译的时候报错)。

64,647

社区成员

发帖
与我相关
我的任务
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++ 技术论坛(原bbs)
社区管理员
  • C++ 语言社区
  • encoderlee
  • paschen
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
  1. 请不要发布与C++技术无关的贴子
  2. 请不要发布与技术无关的招聘、广告的帖子
  3. 请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下

试试用AI创作助手写篇文章吧