在 vector<int>& arr 中使用 & 是为了传递引用。
传递引用的主要目的是避免不必要的拷贝,从而提高程序的性能。当传递一个非常大的容器(如 vector )时,如果不使用引用而是按值传递,会导致整个容器被复制,这可能会带来较大的性能开销。
以下是一个简单的示例代码,展示了传递引用和不传递引用的区别:
#include <iostream>
#include <vector>
// 不使用引用,会复制整个 vector
void func1(std::vector<int> arr) {
std::cout << "In func1, size of arr: " << arr.size() << std::endl;
}
// 使用引用,不会复制,直接操作原始的 vector
void func2(std::vector<int>& arr) {
std::cout << "In func2, size of arr: " << arr.size() << std::endl;
}
int main() {
std::vector<int> myVector = {1, 2, 3, 4, 5};
func1(myVector);
func2(myVector);
return 0;
}
在这个示例中, func1 中对 arr 的操作是在复制的对象上进行的,而 func2 中则是直接对传入的原始 myVector 进行操作。