使用 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中文网其他相关文章!