【问题标题】:std::vector vs dynamic array passing by valuestd::vector 与按值传递的动态数组
【发布时间】:2020-07-15 19:48:21
【问题描述】:

您好,我正在从 c 转到 c++,我一直想知道为什么 std::vector 可以按值传递。

我假设不可能通过值传递动态分配的数组,因为这只会复制指针。

如果向量类内部是相同的指针,那么如何复制向量。它必须以某种方式知道如何将其重构为另一个对象。

【问题讨论】:

  • 对于基本的,考虑 copy-construction。任何体面的书或教程都应该提到它。如果你的书没有,那么here's a list of decent books
  • 复制一个类类型的对象会调用它的复制构造函数,而std::vector的复制构造函数会复制底层数组。

标签: c++ vector


【解决方案1】:

std::vector 知道动态内存中存储了多少元素。分配该大小的新缓冲区并将内容复制到该新内存中是一件简单的事情。所有这些都发生在复制构造函数中。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-12-18
    • 1970-01-01
    • 2012-04-18
    • 1970-01-01
    相关资源
    最近更新 更多