我有一个清单
std::list<Selector> _selectorList;
我会解析一些东西,我得到一个智能指针和与智能指针相关的优先级。我实现了一个结构来保存这两个参数,如下所示。
struct Selector
{
int priority;
SmartPointer *selector;
}
将会进行n次解析,因此会将多个struct实例推回到列表中。最后,我应该根据结构中优先级变量的递减顺序对列表进行排序。目前,我打算这样做。
_selectorList.sort();
有没有比这更好的方法,只要我必须使用一个列表(只有,没有别的)来存储通过解析返回的智能指针?
答案 0 :(得分:3)
像larsman告诉你使用指向SmartPointer的指针很可能是错误的。由于智能指针用于避免内存泄漏,因此引用计数器会在对象复制或赋值时更新,因此SmartPointer *可能无用。
对于更好的方法,您可以重用std :: list :: sort,而不是重新实现自己的排序操作。唯一要做的是让你的Selector实现比较运算符,以便能够对列表进行排序。 看看here。