0

我有一些我想在 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;)
4

1 回答 1

1

我再次查看了我的操作员,发现出了什么问题。构造this->getID() 失败。因为operator>(), 不是用两个指针参数调用的(据我所知)。我用函子解决了它: [..] bool operator()(Multibaseleg* M,Multibaseleg* N){return (M->getID()<N->getID());}[..]

于 2013-06-20T07:08:43.027 回答