【发布时间】:2010-09-29 10:02:06
【问题描述】:
我正试图了解元组(感谢@litb),使用它们的常见建议是返回 > 1 值的函数。
这是我通常会使用结构的东西,在这种情况下我无法理解元组的优势 - 对于最终懒惰的人来说,这似乎是一种容易出错的方法。
Borrowing an example,我会用这个
struct divide_result {
int quotient;
int remainder;
};
使用元组,您将拥有
typedef boost::tuple<int, int> divide_result;
但是如果不阅读您正在调用的函数的代码(或 cmets,如果您愚蠢到相信它们),您将不知道哪个 int 是商,反之亦然。好像有点……
struct divide_result {
int results[2]; // 0 is quotient, 1 is remainder, I think
};
...这不会让我充满信心。
那么,元组相对于弥补歧义的结构的优势是什么?
【问题讨论】:
-
好问题......从答案看来,使用元组的唯一原因是懒惰......并不是说懒惰偶尔没有它的位置,但我不想这样做在生产代码中。
-
这与输入参数常见的惰性相同:参数的顺序很重要,除非它们都有不兼容的类型,在这种情况下你不会弄错。返回元组也是如此。我们可以为每个函数的参数定义一个结构,但是我们太懒了。
标签: c++ tuples boost-tuples