【问题标题】:Moving an array held by a unique_ptr into a vector's array storage将 unique_ptr 持有的数组移动到向量的数组存储中
【发布时间】:2013-08-27 14:58:29
【问题描述】:

有没有办法移动 unique_ptr

unique_ptr<int[]> foo;

变成一个向量?

vector<int> bar;

【问题讨论】:

  • 这有什么意义?
  • 请注意,这不仅需要更改存储空间,还需要更改阵列的大小和容量。
  • @juanchopanza 重点是避免复制成本。
  • @huitlarc 但你为什么首先需要unique_ptr?您可以将数据存储在另一个向量中,然后将其交换或移动到bar
  • 进行此更改是否会产生任何其他成本? stackoverflow.com/q/18471844/2721254

标签: c++ vector move unique-ptr


【解决方案1】:

不,您不能只交给vector 一块内存并期望它将其用作其数组存储。 vector 的存储必须来自 vector 使用的分配器。

您可以尝试使用分配器噱头以某种方式将内存抵押给vector。但即使这样也很棘手,因为vector 可以根据需要分配任意数量的int,无论您告诉它的大小。

您可以将unique_ptr 的内容移动到数组的一个元素 中。说,如果你有一个vector&lt;unique_ptr&lt;int[]&gt;&gt;。但是你不能只是把一段记忆塞进vector

【讨论】:

    猜你喜欢
    • 2016-05-11
    • 2014-07-21
    • 1970-01-01
    • 2015-05-16
    • 2023-02-26
    • 1970-01-01
    • 1970-01-01
    • 2014-04-29
    • 1970-01-01
    相关资源
    最近更新 更多