前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >C++返回vector/将vector作为参数传递

C++返回vector/将vector作为参数传递

作者头像
vincentbbli
发布2021-08-18 14:37:36
5.2K0
发布2021-08-18 14:37:36
举报
文章被收录于专栏:vincent随笔

在C++里很多时候我们会遇到函数想返回两个以上结果的情况,这时候可以用数组(vector)、类来作为容器返回,也可以声明一个全局变量的数组,将数值存放在数组里解决。

第一个方式是使用引用来解决,将vector的引用在函数间传递

这是一个例子,假设我要传入一个数,我的函数的功能是返回这个数后面十个数的序列。

代码语言:javascript
复制
#include
#include
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<
第二个方式是返回vector变量

在被调用函数中声明一个vector变量,函数结束的时候返回vector变量 但是这样的传参方式我有一个不太理解的地方,既然vector变量是在被调函数中声明的,就应该是一个局部变量,在被调函数执行完毕之后这部分空间应该会被销毁,这个变量就无法访问到了,莫非vector是在堆空间开辟的地址?然后返回的其实是指向堆空间vector的指针?

代码语言:javascript
复制
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<
本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2018/06/20 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 第一个方式是使用引用来解决,将vector的引用在函数间传递
  • 第二个方式是返回vector变量
相关产品与服务
容器服务
腾讯云容器服务(Tencent Kubernetes Engine, TKE)基于原生 kubernetes 提供以容器为核心的、高度可扩展的高性能容器管理服务,覆盖 Serverless、边缘计算、分布式云等多种业务部署场景,业内首创单个集群兼容多种计算节点的容器资源管理模式。同时产品作为云原生 Finops 领先布道者,主导开源项目Crane,全面助力客户实现资源优化、成本控制。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档