【问题标题】:Which one to use? Vector or List使用哪一个?向量或列表
【发布时间】:2014-04-21 03:29:05
【问题描述】:

我必须存储 10 个卡片类型的元素(用户定义的类)。我无法决定是使用矢量还是列表。以下是我将对结构执行的操作:

  1. 在结构末尾追加或插入 (最好使用矢量)。

  2. 随机访问(要访问的元素可以在结构中的末尾、开头或任何位置)(同样,向量是更好的选择)。

  3. 删除随机访问的元素,即从开始或结束或任何位置删除元素 (矢量仅适用于结束位置,其他列表首选)。

  4. 将元素从一个位置移动到另一个位置,这样该元素不会与所需位置的元素交换,但它会得到 插入其中(这里的列表要好得多)。

  5. 以与第 4 点相同的方式移动多个元素。 (我更喜欢列表)

那你能指导我选哪一个吗?

非常感谢!

【问题讨论】:

  • 您是否将指针存储在向量/列表中?如果不是,卡片类的大小是多少?现代处理器非常适合中小型阵列。向量消除了列表的指针操作。
  • 不,我不存储指针。班级人数为40人。

标签: list generics data-structures vector stl


【解决方案1】:

听起来您已经对向量和列表进行了研究,您可以看到存在一些相互矛盾的要求。要考虑的另一件事可能是这些操作的频繁性。即您希望从集合中间插入或删除的频率。另一个考虑因素是集合的大小,10 个元素是一个非常小的集合,所以复制 10 个元素并不是什么大问题,除非你经常这样做。我的默认选择是矢量,但您可以对两者进行分析,看看哪个表现更好。

【讨论】:

  • 那么,如何分析它们?对于仅 10 个值,它们将几乎同时执行?
  • 你可以尝试在一百万次迭代的循环中进行。这应该会有所不同。
  • 好吧,如果 1000 次迭代会显示出显着差异,这意味着只有 10 个元素没有显着变化。因此,使用其中任何一个都不会产生任何影响。
  • 我想 list 对我来说是更好的选择,因为我在问题中提到的前三个操作将被操作 10 次,即总共 30 个操作,这是固定的。但是最后两个操作将根据用户的需要执行多次。它可以是从 0 到用户希望的任意次数。在最后两种情况下,列表都是更好的选择。所以要实现一个列表。
猜你喜欢
  • 1970-01-01
  • 2020-08-14
  • 2010-10-02
  • 1970-01-01
  • 2012-06-29
  • 2013-03-09
  • 1970-01-01
  • 2019-01-02
  • 1970-01-01
相关资源
最近更新 更多