【问题标题】:Contiguous allocation of objects using STL vector使用 STL 向量连续分配对象
【发布时间】:2013-10-04 22:19:14
【问题描述】:

我需要动态创建对象并希望使用向量来做到这一点。我知道指向对象的指针将存储在向量中,它们将是连续的,但实际对象不会。我可以按照Create objects in pre-allocated memory 中的方式进行操作。但是,我更喜欢使用向量。有什么办法可以做到吗?

【问题讨论】:

  • 一模一样。请记住不要更改向量的大小,因为内存会被重新分配,这会导致所有指向这些对象的指针失效。
  • 在向量中存储对象而不是指针,它们保证是连续的。
  • 如果你使用vector<T>而不是vector<T*>,对象将在内存中连续布局。
  • 是使用连续内存的自定义分配器吗?

标签: c++ vector stl


【解决方案1】:

“我需要动态创建对象”

您确定需要动态分配吗?如果可能,请改用对象向量:

std::vector<T> myObjects(100);

这会分配一个足够大的内存块来容纳 100 个 T 实例,并使用默认构造函数初始化它们。

【讨论】:

  • @Troy:但我相信事实并非如此。但我改写了我的答案:)
【解决方案2】:

在创建向量时使用自定义分配器。您的分配器可以按照您的需要预先分配内存。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2021-07-08
    • 2011-01-08
    • 1970-01-01
    • 2020-06-05
    • 1970-01-01
    • 1970-01-01
    • 2013-01-26
    • 1970-01-01
    相关资源
    最近更新 更多