std::tie 和 std::tuple std::ignore
tuple 的概念是元组,可以将多种不同类型的元素组成一个结构,常用于函数的多返回值。
std::pair只能用于 2 个元素,std::tuple是对 std::pair的扩展。
#include <iostream>
#include <tuple>
struct A {
int x;
int y;
};
std::tuple<A, int, double> doSomeThing() {
A a;
a.x = 1;
a.y = 2;
int b = 1;
double c = 0.8;
return {a, b, c};
}
int main() {
std::tuple<A, int, double> ret = doSomeThing();
std::cout << std::get<0>(ret).x << std::endl;
std::cout << std::get<0>(ret).y << std::endl;
std::cout << std::get<1>(ret) << std::endl;
std::cout << std::get<2>(ret) << std::endl;
return 0;
}std::tie则可以创建 std::tuple的左值引用,从而避免内存拷贝的性能损失,也可以用于 tuple的解包。
当有不关注的值时,可以用 std::ignore作为占位符
std::tie还可以用于结构体运算符的重载,简化写法。
最后更新于