C++ std::tie函数详解

函数原型
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如果喜欢话,可以关注一下
