我已经运行了3个涉及C ++列表和向量的不同实验。
事实证明,即使在中间涉及很多插入操作,带有向量的操作也更加有效。
因此,出现了一个问题:在哪种情况下列表比矢量有意义?
如果向量在大多数情况下似乎更有效率,并考虑其成员的相似程度,那么列表还有哪些优势?
生成N个整数并将其放入容器中,以便容器保持排序状态。通过逐个读取元素并在第一个较大的元素之前插入新的元素,已天真地执行了插入操作。
与向量相比,有了清单,尺寸增加时,时间就会流逝。在容器的末尾插入N个整数。
对于列表和向量,时间增加了相同的数量级,尽管向量快3倍。在容器中插入N个整数。
启动计时器。
使用list.sort来排序容器,使用std :: sort来对容器进行排序。停止计时器。
同样,时间以相同的数量级增加,但使用向量平均要快5倍。
我可能会继续进行测试,并找出几个清单可以证明更好的例子。
但是你们阅读此消息的共同经验可能会提供更有成效的答案。
您可能遇到过这样的情况,其中列表更易于使用或执行得更好?
list
如果要删除很多元素,A 可能会更好。我不相信a vector
会在整个向量被删除之前将内存返回给系统。还请记住,测试#1并不是仅测试插入时间。这是结合搜索和插入的测试。找到list
缓慢插入的地方。实际插入将比矢量更快。