1

我有一个清单

std::list<Selector> _selectorList;

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

struct Selector
{
    int priority;
    SmartPointer *selector;
}

将进行 n 次解析,结果 n 结构实例将被推回列表中。最后,我应该根据结构中优先级变量的降序对列表进行排序。目前,我打算这样做。

_selectorList.sort();

如果我必须使用一个列表(仅此而已)来存储解析返回的智能指针,还有比这更好的方法吗?

4

1 回答 1

3

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

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

于 2012-06-11T09:33:50.263 回答