使用 STL 排序函数对列表进行排序
当列表包含自定义结构体的对象时,按降序实现列表排序可能会很困难。但是,您遇到的问题“'__last - __first' 中的 'operator-' 不匹配”揭示了所选排序方法的更深层次问题。
提供的 SortDescending 结构正确定义了一个运算符来比较两个术语,但它是根据它们的功率来实现的,t2.pow
问题源于 std::sort 需要随机访问迭代器,而列表迭代器不提供。双向迭代器,如 std::list 中的迭代器,允许您在列表中移动,但它们缺乏执行直接访问或指针算术的必要功能。
要使用 STL 排序函数对列表进行随机排序访问迭代器必须可用。另一种方法是使用成员函数 std::list::sort。此函数接受比较器函数作为参数,使您能够定义自定义排序标准。
在您的情况下,以下代码将根据列表项的幂次对列表进行降序排序:
Result.poly.sort([](const term& t1, const term& t2) { return t1.pow > t2.pow; });
通过使用正确的迭代器和适当的排序函数,您可以按所需的顺序有效地对列表进行排序。
以上是为什么我无法使用'std::sort”和自定义比较器对列表进行降序排序?的详细内容。更多信息请关注PHP中文网其他相关文章!