以最佳方式排序

sorting a the best way possible

本文关键字:排序 方式 最佳      更新时间:2023-10-16

>我有一个列表

std::list<Selector> _selectorList;

确实解析了一些东西,我得到了一个智能指针和一个与智能指针关联的优先级。我实现了一个结构来保存这两个参数,如下所示。

struct Selector
{
    int priority;
    SmartPointer *selector;
}

将完成 n 个解析,因此 n 个结构实例将被推回列表中。最后,我应该根据结构中优先级变量的降序对列表进行排序。目前,我计划这样做。

_selectorList.sort();

有没有比这更好的方法,前提是我必须使用列表(仅而不是其他)来存储通过解析返回的智能指针?

就像larsman告诉你的那样,使用指向SmartPointer 的指针很可能是错误的。由于智能指针用于避免内存泄漏,因此引用计数器会在对象复制或分配时更新,因此 SmartPointer * 可能毫无用处。

对于更好的方法,您可以重用 std::list::sort 而不是重新实现您自己的排序操作。唯一要做的就是让您的选择器实现比较运算符,以便能够对列表进行排序。看看这里。