首页  >  文章  >  后端开发  >  为什么 `std::sort` 无法对结构体的 `std::list` 进行排序?

为什么 `std::sort` 无法对结构体的 `std::list` 进行排序?

Linda Hamilton
Linda Hamilton原创
2024-11-10 22:00:03527浏览

Why Does `std::sort` Fail to Sort a `std::list` of Structures?

使用 STL 排序函数对列表进行排序:实现问题

尝试使用 std::sort 函数对结构列表进行排序时,您可能会遇到编译错误,指示缺少运算符-。当提供的比较器 SortDescending 对 std::list 的元素进行操作时,会出现此错误,该列表支持双向迭代器,而不是 std::sort 所需的随机访问迭代器。

要解决此问题,请不要使用std::sort,使用 std::list::sort 成员函数,该函数专门用于处理列表。这是使用 std::list::sort:

Result.poly.sort(SortDescending());

修改后的代码,请注意,std::list::sort 成员函数还需要一个比较器函数。 SortDescending 比较器保持不变:

struct SortDescending
{
    bool operator()(const term& t1, const term& t2)
    { 
        return t2.pow < t1.pow; 
    }
};

通过将 std::list<>::sort 与 SortDescending 比较器结合使用,您可以根据 'pow' 成员成功对列表进行降序排序。 “术语”结构。

以上是为什么 `std::sort` 无法对结构体的 `std::list` 进行排序?的详细内容。更多信息请关注PHP中文网其他相关文章!

声明:
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn