• 工资「喂饱肚子」,副业「养活灵魂」!

  • 感谢大家访问本站,希望本站的内容可以帮助到大家!

  • 在本站开通年度VIP,无限制下载本站资源和阅读本站文章

  • 如果觉得本站的内容有帮助,可以考虑打赏博主哦!

  • 计算机图形学与计算几何经典必备书单整理,下载链接可参考:https://www.stubbornhuang.com/1256/

  • 本站由于前段时间遭受到大量临时和国外邮箱注册,所以对可注册的邮箱类型进行了限制!

  • 问题反馈可发送邮件到stubbornhuang@qq.com

  • 欢迎大家交换友链,可在https://www.stubbornhuang.com/申请友情链接进行友链交换申请!

  • 本站会放置Google广告用于维持域名以及网站服务器费用。

C++ – 函数返回多个返回值的方法总结

C++ 发布于2021-10-13 阅读 5,671次 0次评论 0次点赞 本文共1952个字,阅读需要5分钟。

1 C++函数如何像python一样返回多个返回值

使用过python的童鞋都知道,在python单个函数中可以返回多个函数值,比如:

# -*- coding: utf-8 -*-

def return_muliti_value():
    return 1,'helloworld',[1,2,3]

if __name__ == '__main__':
    a,b,c = return_muliti_value()

    print(a)
    print(b)
    print(c)

使用过C++同学的都知道,C++从语言标准上只允许函数返回一个返回值,比如

#include <iostream>

int GetAge()
{
    return 18;
}

int main()
{
    int age = GetAge();

    return 0;
}

但是在有的情况下我们需要函数返回多个返回值,比如返回值包括当前操作状态、返回值1、返回值2......。那么C++有没有方式可以在单个函数中返回多个返回值,让枯燥的C艹编程变得有趣起来呢?下面总结几种可以在单个函数中返回多个返回值的方法。

2 C++单个函数返回多个返回值的方法

2.1 函数参数传引用的方式

在单个函数参数中传递多个函数参数引用,这样就可以在函数中直接对所传递的参数进行赋值操作,从而达到返回多个返回值的目的,这种方式在作用上可以达到返回多个返回值的目的,但是写法上并不如python来的那么直观。

#include <iostream>

void GetUserAge(const std::string& user_name,bool& work_status,int& age)
{
    if (user_name.compare("xiaoli") == 0)
    {
        work_status = true;
        age = 18;
    }
    else
    {
        work_status = false;
        age = -1;
    }
}

int main()
{
    bool work_status = false;
    int age = -1;

    GetUserAge("xiaoli", work_status, age);

    std::cout << "查询结果:" << work_status << "    " << "年龄:" << age << std::endl;

    getchar();

    return 0;
}

2.2 使用std::pair返回两个返回值

使用std::pair这种抽象数据结构,该数据结构可以绑定两个异构成员。这种方式的弊端是只能返回两个值。

#include <iostream>

std::pair<bool, int> GetUserAge(const std::string& user_name)
{
    std::pair<bool, int> result;

    if (user_name.compare("xiaoli") == 0)
    {
        result = std::make_pair(true, 18);
    }
    else
    {
        result = std::make_pair(false, -1);
    }

    return result;
}

int main()
{
    std::pair<bool, int> result = GetUserAge("xiaolili");

    std::cout << "查询结果:" << result.first << "   " << "年龄:" << result.second << std::endl;

    getchar();

    return 0;
}

2.3 使用std::tuple返回三个或者三个以上返回值

std::tuple这种抽象数据结构可以将三个或者三个以上的异构成员绑定在一起,返回std::tuple作为函数返回值理论上可以返回三个或者三个以上的返回值。

#include <iostream>
#include <tuple>

std::tuple<bool, int,int> GetUserAge(const std::string& user_name)
{
    std::tuple<bool, int,int> result;

    if (user_name.compare("xiaoli") == 0)
    {
        result = std::make_tuple(true, 18,0);
    }
    else
    {
        result = std::make_tuple(false, -1,-1);
    }

    return result;
}

int main()
{
    std::tuple<bool, int,int> result = GetUserAge("xiaolili");

    bool work_status;
    int age;
    int user_id;

    std::tie(work_status, age, user_id) = result;

    std::cout << "查询结果:" << work_status << "    " << "年龄:" << age <<"   "<<"用户id:"<<user_id <<std::endl;

    getchar();

    return 0;
}

欢迎扫码关注我的微信公众号,及时获取文章更新

微信公众号二维码

本文作者:StubbornHuang

版权声明:本文为站长原创文章,如果转载请注明原文链接!

原文标题:C++ – 函数返回多个返回值的方法总结

原文链接:https://www.stubbornhuang.com/1751/

发布于:2021年10月13日 11:29:15

修改于:2023年06月26日 21:11:21

声明:本站所有文章,如无特殊说明或标注,均为本站原创发布。任何个人或组织,在未征得本站同意时,禁止复制、盗用、采集、发布本站内容到任何网站、书籍等各类媒体平台。如若本站内容侵犯了原著者的合法权益,可联系我们进行处理。

文章末尾
上一篇
资源分享 - A Biography of the Pixel 英文PDF下载
计算几何与计算机图形学资源
下一篇
资源分享 - Computer Graphics Programming in OpenGL with C++, First Edition 英文PDF下载
计算几何与计算机图形学资源
当前分类随机文章推荐

发表评论

您必须 [ 登录 ] 才能发表留言!

关注我们的公众号

微信公众号