为什么似乎没有人在C ++中使用元组,无论是Boost Tuple库还是TR1的标准库?我读了很多C ++代码,很少看到元组的用法,但是我经常看到很多地方元组可以解决许多问题(通常从函数返回多个值)。
元组可以让您做各种很酷的事情,例如:
tie(a,b) = make_tuple(b,a); //swap a and b
那肯定比这更好:
temp=a;
a=b;
b=temp;
当然,您始终可以这样做:
swap(a,b);
但是,如果要轮换三个值怎么办?您可以使用元组来执行此操作:
tie(a,b,c) = make_tuple(b,c,a);
元组还使从函数返回多个变量变得更加容易,这可能比交换值更常见。使用引用返回值当然不是很好。
我没有想到的元组有什么大的缺点吗?如果没有,为什么很少使用它们?他们慢吗?还是仅仅是人们不习惯他们?使用元组是个好主意吗?
a = a ^ b; b = a ^ b; a = a ^ b;