欢迎光临散文网 会员登陆 & 注册

C++ std::tie函数详解

2023-05-17 15:53 作者:艰默  | 我要投稿


函数原型

C++中std::tie函数的作用就是从元素引用中生成一个tuple元组,其在头文件<tuple>中定义,其函数原型如下:

template< class... Types >
std::tuple<Types&...> tie( Types&... args ) noexcept
//C++11起, C++14前

template< class... Types >
constexpr std::tuple<Types&...> tie( Types&... args ) noexcept
;//C++14起

其中参数 args 为构造 tuple 所用的零或更多左值参数。其返回值为含左值引用的std::tuple对象。

作用和用法

1. 解包 tuple 和 pair

std::tie 可以用于解包 tuple 和 pair,因为 std::tuple 拥有从 pair 的转换赋值。

注:元组tuple可以将不同类型的元素存放在一起,可以理解为pair的扩展(pair只能包含两个元素,而tuple可以多个)。

std::tuple拥有从 pair 的转换赋值的主要原因就是:tuple的实现中重载了 operator=,其部分原型如下:


因此,std::tie可以用于pair的解包:


:std::ignore 是令 std::tie 在解包 std::tuple 时作为不使用的参数的占位符使用,即忽略某些 tuple 中的某些返回值。

2. 批量赋值

std::tie 可以将多个变量的引用整合成一个 tuple,进而通过另外一个同类型的 tuple 进行批量赋值。


3. 比较结构体

可以将结构体成员传入std::tie,从而实现结构体的比较。



具体示例


输出结果:


文章首发公众号:iDoitnow如果喜欢话,可以关注一下

如果喜欢话,可以关注一下


C++ std::tie函数详解的评论 (共 条)

分享到微博请遵守国家法律