我有一些我想在 host_vector 上排序的对象,这些对象定义了一个 < 运算符,它比较对象的 Id(整数)。向量包含指向对象的指针。
如果我执行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;)