两种情况我们只修改modifyVector函数里的参数(vector& v_ref有无&)进行验证
情况一:vector<int>& v
#include <iostream>
#include <vector>
void modifyVector(std::vector<int>& v_ref) {
v_ref.push_back(42); // 修改传入的引用所指向的 vector 对象
for (int num : v_ref) {
std::cout <<"修改函数"<< num << std::endl;
}
}
int main() {
std::vector<int> v_obj; // 声明一个 vector<int> 类型的对象
v_obj.push_back(10); // 向 v_obj 中添加一个元素
modifyVector(v_obj); // 传递 v_obj 的引用给 modifyVector 函数
// 输出 v_obj 中的元素
for (int num : v_obj) {
std::cout<<"验证结果" << num << " ";
}
std::cout << std::endl;
return 0;
}
运行结果:
修改函数10
修改函数42
验证结果10 验证结果42
情况二:vector<int> v
#include <iostream>
#include <vector>
void modifyVector(std::vector<int> v_ref) { //此时这里没有&
v_ref.push_back(42); // 修改传入的引用所指向的 vector 对象
for (int num : v_ref) {
std::cout <<"修改函数"<< num << std::endl;
}
}
int main() {
std::vector<int> v_obj; // 声明一个 vector<int> 类型的对象
v_obj.push_back(10); // 向 v_obj 中添加一个元素
modifyVector(v_obj); // 传递 v_obj 的引用给 modifyVector 函数
// 输出 v_obj 中的元素
for (int num : v_obj) {
std::cout<<"验证结果" << num << " ";
}
std::cout << std::endl;
return 0;
}
运行结果:
修改函数10
修改函数42
验证结果10
根据结果得出:
-
vector& v: 这表示 v 是一个指向 vector 对象的引用。引用是变量的别名,因此 v 和另一个
vector 对象可以互相交换数据,对 v 的操作实际上就是对原始 vector 对象的操作。 -
vector v: 这表示 v 是一个 vector 类型的对象。在这种情况下,v
是一个独立的对象,它有自己的存储空间,独立于其他 vector 对象。