排序列表 - 尽可能最好的方式

时间:2012-06-11 09:17:31

标签: c++ list sorting

我有一个清单

std::list<Selector> _selectorList;

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

struct Selector
{
    int priority;
    SmartPointer *selector;
}

将会进行n次解析,因此会将多个struct实例推回到列表中。最后,我应该根据结构中优先级变量的递减顺序对列表进行排序。目前,我打算这样做。

_selectorList.sort();

有没有比这更好的方法,只要我必须使用一个列表(只有,没有别的)来存储通过解析返回的智能指针?

1 个答案:

答案 0 :(得分:3)

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

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