sort对某些值排序错误
thrust::sort missorts some values
我有一些对象我想在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());}[..]
相关文章:
- 将图形表示为unordered_map<字符串、向量>时拓扑排序错误<string>
- C++插入排序错误功能不起作用
- C++ 换行符上的合并排序错误中断
- C++ 快速排序错误
- 合并排序错误 - 表达式必须具有常量值
- C 插入排序错误
- 对向量 OS 字符串进行排序 C++ 错误 C2784 无法推断模板参数
- 递归合并排序错误
- 使用C++的快速排序错误
- std::使用自定义类排序错误
- 使用类在 C++ 中快速排序错误
- 数组中的函数排序错误
- 插入排序错误
- C++部分排序错误
- sort对某些值排序错误
- 针对c++ STL的自定义比较器排序错误预期-在')'标记之前的主表达式
- 气泡排序错误LNK2019
- 链表的归并排序错误
- 快速排序错误:变量周围的堆栈已损坏
- 排序错误:不允许使用类型名称