如果我在列表上调用 sort() 方法,指向 std::list 元素的指针是否仍然有效?这个(标准)有保证吗?它似乎在 Visual Studio 2012 下工作。
问问题
198 次
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 回答