【发布时间】:2012-09-14 21:08:05
【问题描述】:
这是一个关于使用 STL std::sort 函数进行排序的机制的通用问题。我读过一些关于排序的文章,一般来说,排序向量比排序链表更快。这对于结构/对象的向量和链表是否正确?对于结构的链表,我觉得只需修改索引即可轻松实现排序。另一方面,向量的排序似乎涉及物理地切换结构/对象数据的数据位置,因为它们是连续的(这是真的吗?)。在这种情况下,似乎对链表进行排序会更快。
编辑!!!:现在有图片:
所以我想这个问题的措辞更好:排序对象、排序链表或向量哪个更快(尽管这可能取决于对象的大小)?此外,链表的排序是否如 3) 所示完成,向量的排序是否如 2) 所示完成?
【问题讨论】:
-
您总是可以在堆上分配内存并使用指针向量。
-
一个相关的(但我不认为重复的)问题可能会对此有所了解。 ...difference between list.sort and std::sort
-
@Mark:感谢线程,尤其是这部分答案:“此外,成员函数可以通过简单地重新链接列表节点来利用列表数据结构的特殊性质,而标准算法必须执行类似交换(或类似的操作),这需要对象构造、分配和删除。”我想我可能需要进行基准测试才能获得更直接的答案,但我认为对链表进行排序会更快。
标签: c++ sorting stdvector stdlist