You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

C++ vector按值传递的实现原理是什么?

C++ vector按值传递的底层逻辑

vector本质上不是动态数组本身,而是一个轻量的管理对象,内部通常包含三个核心成员:

  • 指向底层动态数组起始位置的指针
  • 指向数组中已用元素末尾后一位的指针
  • 指向已分配内存末尾的指针

当你按值传递vector时,会触发vector的拷贝构造函数,这个函数的核心行为是:

  1. 为副本重新分配一块与原vector底层数组容量匹配的新内存
  2. 将原vector中的所有元素逐个复制到这块新内存中
  3. 让副本的三个内部指针指向新分配的内存区域

这就保证了副本和原vector的底层数组完全独立,修改副本不会影响原对象。

举个直观的代码示例:

#include <vector>
#include <iostream>

void modify_vec(std::vector<int> vec_copy) {
    vec_copy.push_back(100);
    std::cout << "副本元素数量:" << vec_copy.size() << "\n";
}

int main() {
    std::vector<int> original = {1, 2, 3};
    modify_vec(original);
    std::cout << "原vector元素数量:" << original.size() << "\n";
    return 0;
}

运行这段代码会输出:

副本元素数量:4
原vector元素数量:3

可见副本的修改完全不会影响原vector,因为它们的底层内存是分开的。

简单来说,vector的拷贝构造函数实现了深拷贝——它复制的是底层数组的内容,而非仅仅复制指针,这就是按值传递能独立工作的核心原因。

内容的提问来源于stack exchange,提问作者Amirreza Nadi Chaghadari

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.08 16:44:54