sort对某些值排序错误

thrust::sort missorts some values

本文关键字:排序 错误 sort      更新时间:2023-10-16

我有一些对象我想在host_vector上排序,这些对象有<操作符定义,用于比较对象的Id(一个整数)。vector包含指向对象的指针。>

如果我执行thrust::sort(object_vector.begin(),object_vector.end());,然后遍历向量来打印Id,我得到:
48, 49, 0, 1, [..], 47, 50, [..]

执行std::sort(object_vector.begin(),object_vector.end());我把Id按顺序排列。我不知道为什么这两个值乱了顺序(对于相同数量的对象,它们总是相同的)。
这个Id对应的对象没有什么特别的。

stable_sort并不能改变什么。用Id对向量进行排序。操作符:

bool operator<(MultiLegBase* other){return (this->getID()<other->getID());}
bool operator==(MultiLegBase* other){return this->getID()==other->getID();}
bool operator>(MultiLegBase* other){return this->getID()>other->getID();}
virtual unsigned int const getID(return m_Id;)

我再次查看了我的操作符,找到了错误的地方。this->getID()构造失败。因为operator>()不是用两个指针参数调用的(据我所知)。我用函子解出了它[..] bool operator()(Multibaseleg* M,Multibaseleg* N){return (M->getID()<N->getID());}[..]