gpt4 book ai didi

c++ - 我如何使用 std::sort 按 x 坐标对结构进行排序

转载 作者:行者123 更新时间:2023-11-27 23:18:12 26 4
gpt4 key购买 nike

这是我的结构:

class Pont{

private:

int x, y;
public:

Pont( int x=0, int y=0);
int getX() const;
int getY() const;
void setX( int x );
void setY( int y );
void move( int nx, int ny);
};

然后我填写我的 Pont 类型 pontok :

while(n < N){

int x=(rand()%2000);
int y=(rand()%2000);
Pont p(x,y);
if(!letezike(p,n)){
pontok[n]=p;
++n;
}

我试过这个:

bool sorter(Pont const& lhs, Pont const& rhs) {

if (lhs.getX() != rhs.getX())
return lhs.getX() < rhs.getX();
}

std::sort(pontok[0], pontok[N], &sorter);

最佳答案

删除 != 检查。如果 x 值相等,它会给您的程序带来未定义的行为,因为该函数不会到达 return 语句。

bool sorter(Pont const& lhs, Pont const& rhs) {
return lhs.getX() < rhs.getX();
}

如果 x 值相等,这将返回 false,这是它应该做的。

此外,您对 std::sort 的调用不正确。假设 pontok 是一个大小为 N 的点数组,你需要做:

std::sort(pontok, pontok + N, &sorter);

std::sort 采用迭代器范围,该范围指向您要排序的序列的开头和结尾。您传递了数组的两个元素。

关于c++ - 我如何使用 std::sort 按 x 坐标对结构进行排序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15101929/

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