gpt4 book ai didi

c++ - 在哪里放置用于(例如)std::sort 的比较函数?

转载 作者:行者123 更新时间:2023-11-28 07:01:28 25 4
gpt4 key购买 nike

如果我有一个类Cell ,例如,我想根据以下函数对其进行排序( xy 这里是 int 带有访问器的成员变量):

bool sortByCoordinates(const Cell& c1, const Cell& c2) {
return c1.getX() < c2.getX() || (c1.getX() == c2.getX() && c1.getY() < c2.getY());
}

这个函数的最佳放置位置在哪里,以便我可以将它与类似 std::sort 的函数一起使用?

在示例中,他们只是将方法 float 在需要它的上方的源文件中,但实际上我想让它与 Cell 相关联类(class)。我知道我可以覆盖 operator<但可能还有其他排序方法可以用来对 Cell 进行排序,无论如何,为了代码清晰起见,我不太喜欢重写运算符。

目前我将其作为 static我的方法 Cell.h文件,这样我就可以在排序时调用它:

std::sort(cells.begin(), cells.end(), Cell::sortByCoordinates);

这是多个(甚至单个)自定义排序函数的最佳实践吗?头文件是否适合它们?如果不是,那是什么?

最佳答案

按照您描述的方式进行操作是合理的。并定义比较函数inline如果您关心性能(而不是在 .cpp 文件中定义它),那么在 header 本身是个好主意。

就我个人而言,我的偏好与您不同。我会在命名空间范围内(即在类的正下方)声明这个合理的默认比较函数,因为正如所写的那样,它不需要对类成员的特权访问。我会将其声明为 operator < .我认为在似乎是合理的默认顺序时使一个函数变得“特殊”没有什么可耻的。

关于c++ - 在哪里放置用于(例如)std::sort 的比较函数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22418080/

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