gpt4 book ai didi

c++ - std::set 已排序

转载 作者:太空宇宙 更新时间:2023-11-04 15:13:32 24 4
gpt4 key购买 nike

我想知道有一个有序集合,一组指向对象的最方便的方法是什么,比如

std::set<myClass*> mySet;

我希望这个集合按 myClass::someProperty(例如,一个 int)排序。

我应该在 myClass 中重载运算符 < 吗?我不确定它是否会起作用,因为它不是一组 myClass,而是一组指针。

如何定义比较函数?

非常感谢。

最佳答案

您需要定义一个类型(或函数)来取消引用指针并比较它们指向的对象的属性,按照以下一般顺序:

class myClass {
int value;
public:
myClass(int i = 0) : value(i) {}

struct cmp {
bool operator()(myClass *const &a, myClass *const &b) const {
return a->value < b->value;
}
};
};

我们他们这样定义集合:

std::set<myClass*, myClass::cmp> mySet;

不过,我的建议是存储对象而不是指针(如果可能的话)。

关于c++ - std::set<myClass*> 已排序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43905112/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com