c++ 函数vector传参
vector和数组不一样,数组本身和指针差不多,所以传进去的就是一个指针。但是vector并不如此vector传参的三种方式:void func1(vector vet);//传送数值void func2(vector&vet);//引用void func3(vector *vet);//指针这三种方式产生的效果:调用拷贝构造函数,形参改变不会影响到实参不调用拷贝构函数,形参改变影响到实参
·
vector和数组不一样,数组本身和指针差不多,所以传进去的就是一个指针。但是vector并不如此
vector传参的三种方式:
- void func1(vector vet); //传送数值
- void func2(vector &vet); //引用
- void func3(vector *vet); //指针
这三种方式产生的效果:
- 调用拷贝构造函数,形参改变不会影响到实参
- 不调用拷贝构函数,形参改变影响到实参
- 不调用拷贝构函数,形参改变影响到实参
代码如下:
void func1(vector<int> vet) {
vet.emplace_back(1);
}
void func2(vector<int> &vet) {
vet.emplace_back(2);
}
void func3(vector<int> *vet) {
vet->emplace_back(3); //指针用 ->
}
int main() {
vector<int> vet;
func1(vet);
cout << vet[0] << endl; //!!!报错,因为实参不会改变(想正常运行可注释掉这句)
vector<int> vet2;
func2(vet2);
cout << vet2[0] << endl; //输出 2
vector<int> vet3;
func3(&vet3); //这里取得是指针
cout << vet3[0] << endl; //输出 3
//system("pause");
return 0;
}
结尾:
vector最好采用引用或者指针的传参,因为如果数据量大的时候,拷贝会非常的慢;如果只是不想让数据被修改,可以在vector前加上 const。
更多推荐
所有评论(0)