gpt4 book ai didi

c++ - 取决于外部值的自定义比较器

转载 作者:太空狗 更新时间:2023-10-29 21:19:25 26 4
gpt4 key购买 nike

我想要一个set点,按到第三点的距离排序。这样的事情可能吗?

我试过了,但是不行:

struct compStruct {

Point point;

bool operator()(const Point & a, const Point & b) const { return length(a-point)<length(b-point); }

};

void f(const Point & point) {
compStruct cs;
cs.point = point;
std::set<Point, &cs.operator()> pointSet;
}

我不能使用 lambda,因为我想将该集合用作另一个函数的参数。所以这是行不通的:

void g(std::set<Point, pointComp>) {}
void f(const Point & point) {
auto pointComp = [&](const Point & a, const Point & b){ return length(a-point)<length(b-point); };
std::set<Point, pointComp> s;
g(s);
}

最佳答案

如果您更改声明 std::set 实例的方式,您的第一个示例应该可以工作:

std::set<Point, compStruct> pointSet(cs);

模板不限制您使用函数类型;您可以指定一个类用作比较器。

编辑 - 更新示例以正确传递比较器的实例。

关于c++ - 取决于外部值的自定义比较器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27364892/

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