gpt4 book ai didi

c++ - 按坐标值对具有 3D 点的 vector 进行排序——语法

转载 作者:塔克拉玛干 更新时间:2023-11-02 23:57:14 24 4
gpt4 key购买 nike

我想对 points_vec vector 进行排序,如下面的伪代码所示。我想按 x 或 y 或 z 之类的坐标值对这个 vector 进行排序

class A{

std:vector<double*> points_vec;

void doSomething();

}

然后,在方法 A::doSomething, 中,我想对这个 vector 进行排序:

void A::doSomething() {
std::sort(points_vec.begin(), points_vec.end(), sortPoints());
}

谁能告诉我 sortPoints() 方法的语法。我希望它是 A 类的方法。this post创建一个 struct 来执行此操作,不确定我是否应该在类中创建一个类似的 struct。有没有其他方法来处理这个问题?

谢谢

最佳答案

最简单的方法是提供一个仿函数,排序 算法使用它来比较两个值。你可以这样写:

struct Compare
{
bool operator()(double* first, double* second) const
{
//Compare points here
}
};

然后像这样使用:

std::sort(p.begin(), p.end(), Compare());

OP 评论编辑:是的,此示例代码编译良好:

class A
{
public:
struct c
{
bool operator()(int a, int b) const
{
return a < b;
}
};
};
int main()
{
std::vector<int> a1;
a1.push_back(2);
a1.push_back(1);
std::sort(a1.begin(), a1.end(), A::c());

return 0;
}

关于c++ - 按坐标值对具有 3D 点的 vector 进行排序——语法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2301615/

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