【问题标题】:Is a STL vector pf pointers to vectors my best option?指向向量的 STL 向量是我的最佳选择吗?
【发布时间】:2020-01-30 22:31:43
【问题描述】:

我目前有很多向量都设置为 1200 个项目,这有点过分了,但可以使用。所以我不必重新编码很多东西,创建和迭代这些向量列表并根据需要调整它们的大小的最佳方法是什么? (它们的大小都相同)

我的一个选择是为每个向量创建一个指针(事后),然后创建一个可以迭代以调整大小的这些指针的向量。另一种选择是首先将向量创建为指针而不是对象。这似乎需要做很多工作,而且我目前有很多使用矢量对象的代码。

还有其他选择吗?

弗雷德·E.

【问题讨论】:

    标签: vector stl


    【解决方案1】:

    在 C++ 中,std::vector 只是原始数据指针的包装器。向量本身将数据存储在堆中。因此,您可以将向量作为对象存储在向量中,也可以存储指向它们的指针。

    最简单的方法是将向量作为对象存储在向量中,但您必须仔细监控如何将此外部向量传递给函数。您应该始终通过引用传递它或传递指向它的指针,以免触发复制所有嵌套向量。另一方面,这样的向量会在其析构函数触发时自动且正确地移除嵌套向量。

    向量指针的向量有它的优点和缺点。一方面,当以该向量作为参数调用函数不准确时,只会复制指针。另一方面,通过指针访问向量会影响性能。另外,在存储向量的指针时,一定要注意自己删除。

    如果您的向量是在其他地方创建和删除的,而您只需要遍历它们并在代码中修改它们,那么显然向量指针向量是您的最佳选择。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2013-11-12
      • 1970-01-01
      • 1970-01-01
      • 2011-09-11
      • 2012-08-04
      • 1970-01-01
      • 2013-07-19
      相关资源
      最近更新 更多