C++返回vector/将vector作为参数传递
在C++里很多时候我们会遇到函数想返回两个以上结果的情况,这时候可以用数组(vector)、类来作为容器返回,也可以声明一个全局变量的数组,将数值存放在数组里解决。但是绝不能在函数中声明一个vector然后将这个vector返回,这是因为在函数内声明的变量为局部变量,该变量在函数执行时是保存在函数栈中的,在函数执行完毕后会进行出栈操作,此时该内存会被清空,你所返回的变量就不存在了,主调函数当然就取
·
在C++里很多时候我们会遇到函数想返回两个以上结果的情况,这时候可以用数组(vector)、类来作为容器返回,也可以声明一个全局变量的数组,将数值存放在数组里解决。
第一个方式是使用引用来解决,将vector的引用在函数间传递
这是一个例子,假设我要传入一个数,我的函数的功能是返回这个数后面十个数的序列。
#include<iostream>
#include<vector>
using namespace std;
/*
输入一个数,返回这个数后面的十个数字序列
注意参数的这个 & 符号不能省略
*/
void getSequence(int num,vector<int>& sequence){
for(int i=0;i<10;i++){
sequence.push_back(i+num);
}
}
int main(){
int num=9;
vector<int> sequence;
//在主调函数这边,直接传入该vector变量
getSequence(num,sequence);
//访问该vector的值的时候,也是直接访问即可
for(vector<int>::iterator it=sequence.begin();it!=sequence.end();it++){
cout<<*it<<endl;
}
}
第二个方式是返回vector变量
在被调用函数中声明一个vector变量,函数结束的时候返回vector变量
但是这样的传参方式我有一个不太理解的地方,既然vector变量是在被调函数中声明的,就应该是一个局部变量,在被调函数执行完毕之后这部分空间应该会被销毁,这个变量就无法访问到了,莫非vector是在堆空间开辟的地址?然后返回的其实是指向堆空间vector的指针?
vector<int> getSequence(int num){
vector<int> sequence;
for(int i=0;i<10;i++){
sequence.push_back(i+num);
}
return sequence;
}
int main(){
int num=9;
vector<int> sequence;
//在主调函数这边,只传入num
sequence=getSequence(num);
//访问该vector的值的时候,也是直接访问即可
for(vector<int>::iterator it=sequence.begin();it!=sequence.end();it++){
cout<<*it<<endl;
}
}
更多推荐
已为社区贡献1条内容
所有评论(0)