vector<int>& or vector<int> ?

在编程过程中,理解C++中vector的引用和拷贝至关重要。使用vector时,函数接收到的是该容器的副本,不会影响原始数据。而传入vector&则意味着传递的是原始数据的引用,任何修改都会直接影响到原始数据。了解这一差异能避免不必要的错误并提高代码效率。

在刷leetcode的时候,遇到的问题:
在有些地方,使用的是vector&,而另一些地方使用的是vector。
一直没弄懂有一个&和没有&到底是什么区别。
在StackOverflow上找到了一个老哥给出的答案,原答案是这样写的:
StackOverflow
老哥的意思就是说,当你使用vector的时候,函数获得的是数组的copy也就是复制,你可以在函数中对数组做任何的事情,并且你的原始数组的数据不会改变。
但是如果你使用vector&的时候,函数获得的就是对原始数据的引用,在函数中任何的修改,都会对原始数据产生影响。

这个问题让我明白了一件事:以后能用Google少用百度!

在代码中 `vector<int>& nums` 表示 `nums` 是一个对 `vector<int>` 类型对象的引用。 引用在 C++ 里是对象的别名,使用引用作为函数参数可以避免对传递的对象进行拷贝,从而提升程序的性能。在 `search` 函数中,`vector<int>& nums` 意味着函数接收的是一个存储整数的向量的引用,而非向量的副本。这就使得函数能够直接操作原始的向量,而不是创建一个新的向量来进行操作,节省了内存和时间[^1]。 以下是一个简单的例子,展示了使用引用和不使用引用的区别: ```cpp #include <iostream> #include <vector> // 使用引用作为参数 void modifyVectorWithReference(std::vector<int>& vec) { vec.push_back(100); } // 不使用引用作为参数 void modifyVectorWithoutReference(std::vector<int> vec) { vec.push_back(200); } int main() { std::vector<int> nums = {1, 2, 3}; modifyVectorWithReference(nums); std::cout << "After modifyVectorWithReference: "; for (int num : nums) { std::cout << num << " "; } std::cout << std::endl; modifyVectorWithoutReference(nums); std::cout << "After modifyVectorWithoutReference: "; for (int num : nums) { std::cout << num << " "; } std::cout << std::endl; return 0; } ``` 在这个例子中,`modifyVectorWithReference` 函数使用引用作为参数,所以对向量的修改会影响到原始的向量;而 `modifyVectorWithoutReference` 函数不使用引用,传递的是向量的副本,所以对副本的修改不会影响到原始的向量。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值