使用const引用传递避免拷贝且保证安全,适用于只读操作;2. 非const引用用于修改原vector;3. 传值适用于需独立副本的场景,但大容器开销大;4. 传递迭代器可提高灵活性和通用性。多数情况推荐const引用读取、引用修改,避免不必要的拷贝,提升效率。

在C++中向函数传递
vector时,应根据使用场景选择合适的传递方式,以兼顾性能和安全性。直接传值可能带来不必要的开销,而正确的引用传递能提升效率。
1. 使用 const 引用传递(最常用)
如果函数只是读取
vector内容而不修改,推荐使用
const std::vector。这种方式避免了拷贝,同时保证数据不被更改。 示例:&
void printVector(const std::vector
for (int val : vec) {
std::cout
}
}
这种写法高效且安全,是只读操作的首选。
2. 使用非 const 引用传递(需修改内容)
当函数需要修改原始
vector时,使用非常量引用
std::vector。&
立即学习“C++免费学习笔记(深入)”;
示例:void addElement(std::vector
vec.push_back(value);
}
调用后原
vector会被更新,适合就地修改的场景。
3. 传值(适用于复制或独立操作)
仅在需要对
vector做独立副本时才传值,例如函数内部会大幅修改且不影响原数据。
std::vector
std::reverse(vec.begin(), vec.end());
return vec;
}
注意:传值会触发拷贝构造,大容器时成本高,慎用。
4. 传递迭代器或范围(更灵活)
若只需处理
vector的一部分,可传递迭代器,提高通用性。
void processRange(std::vector
std::vector
for (auto it = first; it != last; ++it) {
// 处理元素
}
}
也可使用模板配合
begin()/
end()支持多种容器。
基本上就这些。多数情况下,用
const std::vector读,&
std::vector写,避免不必要的拷贝,代码既高效又清晰。&











