【发布时间】:2013-11-15 05:07:56
【问题描述】:
根据 Accelerated C++:
要使用这种策略,我们需要一种从向量中删除元素的方法。好消息是存在这样的设施。坏消息是从向量中删除元素的速度足够慢,以至于反对将这种方法用于大量输入数据。如果我们处理的数据变得非常大,性能会下降到惊人的程度。
例如,如果我们所有的学生都失败了,我们即将看到的函数的执行时间将与学生人数的平方成正比增长。这意味着对于一个有 100 名学生的班级,该计划的运行时间是一个学生的 10,000 倍。问题是我们的输入记录存储在一个向量中,该向量针对快速随机访问进行了优化。这种优化的一个代价是插入或删除向量末尾以外的元素可能会很昂贵。
作者没有解释为什么向量对于 10,000 多名学生来说会如此缓慢,以及为什么在向量中间添加或删除元素通常很慢。 Stack Overflow 上的人可以为我想出一个漂亮的答案吗?
【问题讨论】:
-
AC++ 是我们推荐的一本好书,所以我严重怀疑他们没有解释什么是向量,什么是不好的,以及为什么。您是否继续阅读以找出答案?
-
@LightnessRacesinOrbit:您在编辑此内容时是否打算删除引用?没有它,问题会更糟。
-
@JohnDibling:意外;抱歉,谢谢
标签: c++ performance vector containers