C++学习笔记(三十):c++ 多个返回值

  • 本节主要介绍c++函数多个返回值的实现方式。
  • 返回结构体

  • 通过返回一个结构体来返回多个值,该实现方式代码的可读性高,便于维护。同时在栈上创建结构体,函数也拥有比较好的性能。示例代码如下:
  • #include <iostream>struct TestResult {std::string s1;std::string s2;int a;
    };TestResult GetStringMessage()
    {TestResult tr;tr.s1 = "Hello ";tr.s2 = "pcop!";tr.a = 7;return tr;
    }int main()
    {TestResult tr = GetStringMessage();std::cout << tr.s1 << tr.s2 << tr.a << std::endl;std::cin.get();return 0;
    }
  • 在方法的参数中传入接收返回值的变量。这样做的弊端是当要返回的参数太多时,方法的参数将会有很多。

  • #include <iostream>void GetStringMessage(std::string& s1Out, std::string& s2Out)
    {s1Out = "Pcop!";s2Out = "NIUbi!";
    }int main()
    {std::string s1,s2;GetStringMessage(s1, s2);std::cout << s1 << std::endl;std::cout << s2 << std::endl;std::cin.get();return 0;
    }
  • 通过返回tuple或者pair来返回多个返回值,tuple或者pair在取值的时候相对比较麻烦,而且可读性比较差。

  • #include <iostream>
    #include <utility>
    #include <functional>std::tuple<std::string, std::string> GetStringMessage()
    {std::string s1Out = "Pcop!";std::string s2Out = "NIUbi!";return std::make_tuple(s1Out, s2Out);
    }int main()
    {std::string s1 = std::get<0>(GetStringMessage()); std::string s2 = std::get<1>(GetStringMessage());std::cout << s1 << std::endl;std::cout << s2 << std::endl;std::cin.get();return 0;
    }
  • #include <iostream>
    #include <utility>
    #include <functional>std::pair<std::string, std::string> GetStringMessage()
    {std::string s1Out = "Pcop!";std::string s2Out = "NIUbi!";return std::make_pair(s1Out, s2Out);
    }int main()
    {auto source = GetStringMessage();std::string s1 = source.first;std::string s2 = source.second;std::cout << s1 << std::endl;std::cout << s2 << std::endl;std::cin.get();return 0;
    }

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/612537.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

详解JavaScript中的WeakMap和WeakSet

&#x1f9d1;‍&#x1f393; 个人主页&#xff1a;《爱蹦跶的大A阿》 &#x1f525;当前正在更新专栏&#xff1a;《VUE》 、《JavaScript保姆级教程》、《krpano》 ​ ​ ✨ 前言 内存管理一直是JavaScript这门语言中的难点和痛点。由于其自动垃圾回收机制的限制,在某些场…

HTTPS详解及openssl简单使用

OpenSSL 中文手册 | OpenSSL 中文网 本文介绍https传输协议中涉及的概念&#xff0c;流程&#xff0c;算法&#xff0c;如何实现等相关内容。 HTTP传输过程 HTTP 之所以被 HTTPS 取代&#xff0c;最大的原因就是不安全&#xff0c;至于为什么不安全&#xff0c;看了下面这张图…

媒体运营常用的ChatGPT通用提示词模板

媒体平台选择&#xff1a;如何选择合适的媒体平台&#xff0c;确保内容的有效传播&#xff1f; 内容策划与创作&#xff1a;如何策划和创作高质量的内容&#xff0c;吸引和留住目标受众&#xff1f; 内容发布与推广&#xff1a;如何有效地发布和推广内容&#xff0c;提高内容…

如何通过 Prompt 优化大模型 Text2SQL 的效果

前言 在上篇文章中「大模型LLM在Text2SQL上的应用实践」介绍了基于SQLDatabaseChain的Text2SQL实践&#xff0c;但对于逻辑复杂的查询在稳定性、可靠性、安全性方面可能无法达到预期&#xff0c;比如输出幻觉、数据安全、用户输入错误等问题。 本文将从以下4个方面探讨通过Pr…

Python办公自动化 – 操作NoSQL数据库和自动化图像识别

Python办公自动化 – 操作NoSQL数据库和自动化图像识别 以下是往期的文章目录&#xff0c;需要可以查看哦。 Python办公自动化 – Excel和Word的操作运用 Python办公自动化 – Python发送电子邮件和Outlook的集成 Python办公自动化 – 对PDF文档和PPT文档的处理 Python办公自动…

前端-基础 表格标签 - 相关属性详解

目录 相关属性 &#xff1a; align 属性 &#xff1a; border 属性 &#xff1a; cellpadding 属性 &#xff1a; cellspacing 属性 &#xff1a; width 属性 &#xff1a; height 属性 &#xff1a; 首先&#xff0c;需要声明的是 表格标签这部分属性&…

Hive基础题-1

别看我&#xff0c;不看答案我也不会写 正因为不会写&#xff0c;所以才要每天一练 本地hive练习题 SET hive.exec.mode.local.autotrue; -- 默认 false SET hive.exec.mode.local.auto.inputbytes.max50000000; SET hive.exec.mode.local.auto.input.files.max5; -- 默认 4# …

【2023开发组一等奖】星地一体化智能土壤环境分析监测系统

作品介绍 1 需求分析 土壤是国家最重要的自然资源之一,不仅是构成生态系统的基本要素,同时也是人类赖以生存的物质基础。土壤环境状况不仅直接影响到国民经济发展,而且直接关系到农产品安全和人体健康。2021年底,国务院印发的《“十四五”土壤、地下水和农村生态环境保护规…

云卷云舒:数据库的serverless演进趋势

随着阿里云、华为云的PolarDB、guessDB都在大力演进serverless版本的发布&#xff0c;部分特性已经发布公测&#xff0c;国内的另外两家云服务商移动云、天翼云也相继推出serverless版本&#xff0c;并计划近期公测&#xff0c;可以看出数据库的serverless趋势依然非常明显。 数…

Hotspot源码解析-第十七章-虚拟机万物创建(三)

17.4 Java堆空间内存分配 分配Java堆内存前&#xff0c;我们先通过两图来了解下C堆、Java堆、内核空间、native本地空间的关系。 1、从图17-1来看&#xff0c;Java堆的分配其实就是从Java进程运行时堆中选中一块内存区域来映射 2、从图17-2&#xff0c;可以看中各内存空间的…

Grafana Promtail 配置解析

由于目前项目一般都是部署在k8s上&#xff0c;因此这篇文章中的配置只摘录k8s相关的配置&#xff0c;仅供参考&#xff0c;其他的配置建议上官网查询。 运行时打印配置 -print-config-stderr 通过 ./promtail 直接运行Promtail时能够快速输出配置 -log-config-reverse-order 配…

thinkphp学习07-数据库的数据查询

单数据查询 单条数据查询&#xff0c;一般是一维数组 Db::table()中 table 必须指定完整数据表&#xff08;包括前缀&#xff09;&#xff0c;如果配置了表前缀&#xff0c;Db::name()中可以忽略 如果希望只查询一条数据&#xff0c;可以使用 find()方法&#xff0c;需指定 wh…

Django 框架添加管理员,完成对普通用户信息管理

前情回顾&#xff1a;Django框架 完成用户登录注册 文章目录 1.创建管理员2.完善管理员功能2.1增加管理员登录功能2.2完善展示用户信息功能2.3完善修改用户信息功能2.4完善删除用户信息功能 1.创建管理员 一般管理员都是直接指定&#xff0c;不开放页面注册&#xff0c;可以直…

Mermaid 教程

Mermaid 教程 Mermaid 介绍 Mermaid 是一个用于生成流程图、时序图、甘特图等图表的 JavaScript 库。它使用类似于 Markdown 的文本语法&#xff0c;使得创建图表变得简单直观。以下是一个简单的 Mermaid 教程&#xff0c;介绍如何使用 Mermaid 创建流程图、时序图和甘特图。…

Qt中QByteArray之元素访问

访问QByteArray类对象中的某个元素主要有4种方式,分别为[]、at()、 data[]和constData[]。其中&#xff0c;[]和data]]方式为可读可写&#xff0c;at()和constData[]方式仅为可读。如果只是进行读操作&#xff0c;则通过at()和constData[]方式的访问速度最快&#xff0c;因为避…

wxWidgets实战:使用mpWindow绘制阻抗曲线

选择模型时&#xff0c;需要查看model的谐振频率&#xff0c;因此需要根据s2p文件绘制一张阻抗曲线。 如下图所示&#xff1a; mpWindow 左侧使用mpWindow&#xff0c;右侧使用什么&#xff1f; wxFreeChart https://forums.wxwidgets.org/viewtopic.php?t44928 https://…

【MMC子系统】四、MMC控制器驱动层

我的圈子&#xff1a; 高级工程师聚集地 我是董哥&#xff0c;高级嵌入式软件开发工程师&#xff0c;从事嵌入式Linux驱动开发和系统开发&#xff0c;曾就职于世界500强企业&#xff01; 创作理念&#xff1a;专注分享高质量嵌入式文章&#xff0c;让大家读有所得&#xff01; …

Keil编译生成的bin文件自动以版本号命名

Keil编译程序生成bin文件时&#xff0c;如何自动以版本号命名bin文件 一、目的二、方法三、实现过程1、脚本形式2、可执行文件形式 一、目的 Keil编译程序时&#xff0c;生成的Hex/Bin文件名字是根据Keil中工程配置里定的名字命名。通常代码里会有一个字段专门用来定义软件版本…

权限维持篇

一、Windows 1、 不死马权限维持 1.1 概述 <?php ignore_user_abort(); //关掉浏览器&#xff0c;PHP脚本也可以继续执行. set_time_limit(0);//通过set_time_limit(0)可以让程序无限制的执行下去 $interval 5; // 每隔*秒运行 do { $filename test.php; if(file_exi…

vue3.2引用unplugin-vue-components插入,解放开发中import组件

目录 前言引用unplugin-vue-components插件的优缺点优点缺点 unplugin-vue-components插件引入安装插件配置vite配置更新TypeScript配置使用代码位置 总结Q&A 前言 unplugin-vue-components是一个用于Vue.js项目的插件&#xff0c;特别适用于Vite和Webpack构建工具。它的主…