如果我在列表上调用sort()方法,指向std :: list元素的指针是否仍然有效?这个(标准)有保证吗?它似乎在Visual Studio 2012下工作。
答案 0 :(得分:5)
来自“Working 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()
。
答案 1 :(得分:2)
排序不会移动内存中列表的元素,只会更改下一个和上一个链接指针。应该没问题。