0

如果我在列表上调用 sort() 方法,指向 std::list 元素的指针是否仍然有效?这个(标准)有保证吗?它似乎在 Visual Studio 2012 下工作。

4

2 回答 2

5

来自“C++ 工作草案,2012-11-02”

23.3.5.5 列表操作[list.ops]
void sort();
template <class Compare> void sort(Compare comp);
28 要求:(operator<对于第一个版本)或comp(对于第二个版本)应定义严格的弱排序(25.4)。
29 效果:根据operator<Compare函数对象对列表进行排序。不影响迭代器和引用的有效性。
30 备注:稳定。
31 复杂性:大约 N log(N ) 比较,其中N == size().

于 2013-02-24T14:22:43.973 回答
2

排序不会移动内存中列表的元素,只会更改下一个和上一个链接指针。应该没问题。

于 2013-02-24T14:19:15.873 回答