当前位置: 首页 > news >正文

C++ 学习笔记(Structured bindings)

C++ 学习笔记(Structured bindings)

这个特性是 C++17 引入的,个人认为主要是解决如何让函数返回多个值的问题。在这之前,我们一般用 std::pair 或者 std::tuple 来返回多个值。比如下面的例子:

std::tuple<int, int ,int > test()
{return std::make_tuple(1,2,3);
}std::pair<int, double> test2()
{return std::make_pair(12, 12.222);
}int a1, a2, a3;double b1;std::tie(a1, a2, a3) = test();qDebug() << "a1 = " << a1 << ",a2 = " << a2 <<", a3 = " << a3;std::tie(a1, b1) = test2();qDebug() << "a1 = " << a1 << ",b1 = " << b1;

在上面的例子中,我们先定义了一些变量,然后用 std::tie 把他们绑定成一个 std::tuple,这样就可以获取多个值了。

在C++ 17 中,把这个特性更近了一步。例如下面的例子:

    auto [aa1, aa2, aa3] = test();qDebug() << "aa1 = " << aa1 << ",aa2 = " << aa2 <<", aa3 = " << aa3;

另外,C++ 17 还扩充了 if 和 swtich 的语法,可以像下面这样:

    if(auto [aa1, aa2, aa3] = test(); aa2 == 2){qDebug() << "aa1 = " << aa1 << ",aa2 = " << aa2 <<", aa3 = " << aa3;}switch (auto [aa1, aa2, aa3] = test(); aa2 ) {case 1:qDebug() << "1";break;case 2:qDebug() << "2";break;default:break;}
http://www.lryc.cn/news/308854.html

相关文章:

  • K8S常用kubectl命令汇总(持续更新中)
  • 加密和签名的区别及应用场景
  • 双非二本找实习前的准备day3
  • 又挖到宝了!国人团队研发的AI视频工具PixVerse,这么好用居然还完全免费!(强烈推荐)
  • 勒索病毒普通用户防范建议
  • Zabbix“专家坐诊”第231期问答
  • 【.NET Core】深入理解IO - FileSteam流
  • CentOS7 Mysql 忘记密码或临时密码进不去时怎么跳过密码进去然后再更改密码
  • 深度学习 精选笔记(8)梯度消失和梯度爆炸
  • linux操作docker
  • k8s Pod 进阶(资源限制,健康检查探针详解,启动退出,pod生命周期,)
  • SpringBoot整合ActiveMQ步骤
  • MySQL的单表和多表查询
  • 攻防世界例题wp
  • 仿牛客网项目---显示评论和添加评论功能的实现
  • idea集成git详解教程(实用篇)
  • 搭建LNMP环境并配置个人博客系统
  • 为什么网络安全缺口这么大,还是这么缺网络安全工程师?
  • 创新洞察|诺奖获得者埃德蒙·费尔普斯谈未来:中国创新从何而来?
  • SpringMVC 学习(六)之视图
  • ROS 2基础概念#1:计算图(Compute Graph)| ROS 2学习笔记
  • 一本通 1403:素数对
  • 华为---RSTP(四)---RSTP的保护功能简介和示例配置
  • Android基础控件介绍
  • 【总结】Maxwell学习笔记
  • AFL fork server和fuzzer的交互
  • Java SE:多线程(Thread)
  • 你敢信?软件测试万能面试脚本他来了?
  • C++/Python简单练手题
  • 视频在线压缩