boost::tie或std::tie是啥
简介
学boost库的时候,遇到一段代码,函数返回类型是boost::tribool
类型。代码里用了boost::tie
函数,有点蒙蔽了。查资料总结如下,std也有对应的实现。
基本概念先弄清,std::tuple
std::tuple
元组数据类型,可以把不同类型的元素封装到一个对象里面。可以理解为简单的结构体变量。比如下面的例子,如果使用tuple
作为返回值,则一次可返回三个值。
#include <iostream>
#include <tuple>std::tuple<int, double, const char*> foo2(int a, double b,const char* c)
{return std::tuple<int, double, const char*> (a, b, c);
};int main()
{const char* msg = "1.3";auto var = foo2(1,2,msg);
}
和tie有什么关系?
很简单,就是你把结果包到一个变量传出去了,别人拿到你这个包之后需要拆出来。
在上一步的main函数中添加以下的代码:
int main()
{const char* msg = "1.3";auto var = foo2(1,2,msg); // 先按照元组的类型定义独立的变量,再调用tie函数把结果拆出来。int a;double b;const char* c;std::tie(a, b, c) = var; //拆包函数,注意被拆的在右边
}
敲黑板、抠细节啦,因为解包是传递值的过程,所以就有了std::ignore
,来避免一些成员的解包。如下的代码就仅把a
拆出来了。
int a;std::tie(a, std::ignore, std::ignore) = var;
boost::tie或std::tie是啥相关推荐
- c++之 std::tie
简介 在c++ 11标准库中,加入了std::tie,在c++ 14中改进,方便使用. 其与tuple关系密切, 主要目的是方便地使用tuple. 元组 std::tuple 元组tuple,有人认为 ...
- std::tie简单介绍
参考链接 std::tie详解 std::tie
- std::tuple、std::tie(可用于结构体大小比较)、std::pair用法
1.tuple应用: 解释:是一个元组,可包含无限多不同类型变量,pair的升级版,但没有pair得成员变量first.second. 1.1.代码: // tuple example #includ ...
- std::tie详解
std::tie:创建左值引用的 tuple,或将 tuple 解包为独立对象 返回值 含左值引用的 std::tuple 对象. 注意 std::tie 可用于解包 std::pair ,因为 st ...
- 从一个小题中的应用来体会下std::tie的便利之处
文章目录 前言 解题过程 爬楼梯的最少成本 题目分析 DP优化 利用tie进行写法优化 std::tuple std::tuple的访问 std::tie函数中使用std::ignore占位 总结 前 ...
- std::tuple, std::pair, std::tie 快速掌握
tuple是可以存异构元素的容器,比如可以在一个容器中同时存储int.string.bool等. 作为对比,vector只能存储同类型的元素.tuple可做作为struct的一种更简洁高效的替代. 使 ...
- std::pair std::tuple std::tie
std::pair 固定包含两个数据,Defined in header <utility> 场景 pair是将2个数据组合成一个数据,当需要这样的需求时就可以使用pair,如stl中的m ...
- std::tie 创建左值引用的 tuple,或将 tuple 解包为独立对象
说明 std::tie : 创建左值引用的 tuple,或将 tuple 解包为独立对象 可以对std::tuple以及std::pair进行解包 返回值 含左值引用的 std::tuple 对象. ...
- boost::hana::ext::std::vector_tag用法的测试程序
boost::hana::ext::std::vector_tag用法的测试程序 实现功能 C++实现代码 实现功能 boost::hana::ext::std::vector_tag用法的测试程序 ...
最新文章
- 重磅!三星宣布3nm成功流片!
- Java NIO 系列教程 转
- java机试_java机试要点
- ScheduledExecutorService
- Java开发人员访谈的MindMap
- 工作237:vuex取值
- 基于Spring Cloud及K8S构建微服务应用
- 递归处理汉诺塔问题(c++/python)
- Centos之常用命令
- 从零搭建自己的SpringBoot后台框架(十三)
- 一种基于加权处理的无线传感器网络平均跳距离估计算法(W-DVHop)
- 计算机图形学代码之三角形绘制
- session超时以及销毁
- Java毕设项目银行贷款管理系统计算机(附源码+系统+数据库+LW)
- 亚马逊云的服务器(EC2)+阿里云的域名,添加ssl证书
- 【flask高级】从源码深入理解flask路由之endpoint
- pwd和$PWD的联系与区别
- coreldraw怎么画猴子_猴年画猴:CD11绘制小猴头像(1)
- Java用for循环打印99乘法表
- 【模电—低频学习笔记(一)】信号的频谱
热门文章
- Gravatar镜像源自建教程,使用CDN加速无需配置反代
- 2010年IT行业从业者掌握哪六种技能将大受欢迎?
- IM热门功能讨论:为什么微信里没有消息“已读”功能?
- 前端e2e测试使用nightwatch简单示例
- springboot 实现机器学习_机器学习入门之SpringBoot学习历程
- 快消品营销模式变革:一物一码BC一体化营销
- [转]ceph RADOS----概述
- “陶渊明后人”讲故事月入百万,借鉴他的玩法,你也可以月入1万
- 【NLP】文本分类微调技巧实战2.0
- ipd敏捷开发_契合前行,IPD下的敏捷实施