gpt4 book ai didi

c++ - thrust::sort 对某些值进行了错误排序

转载 作者:行者123 更新时间:2023-11-28 07:33:30 25 4
gpt4 key购买 nike

我有一些要在 host_vector 上排序的对象,这些对象定义了一个 < 运算符,它比较对象的 Id(整数)。该 vector 包含指向对象的指针。

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

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

stable_sort 不会改变任何东西。使用 Id 的作品对 vector 进行排序。运营商:

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;)

最佳答案

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

关于c++ - thrust::sort 对某些值进行了错误排序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17194944/

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