【发布时间】:2015-12-05 07:57:24
【问题描述】:
我是编程新手,我正在使用这本书学习 C++ 编程语言:编程原理和使用 C++ 的实践。我今天来到这里,是因为在第 8 章的最后,作者专注于函数,并提出了一个练习,让学习者思考一个问题的更好解决方案:
编写一个函数,找出向量参数的最小和最大元素,并计算均值和中位数。不要使用全局变量。要么返回包含结果的
struct,要么通过引用参数将它们传回。您更喜欢这两者中的哪一个返回多个值,为什么?
现在,通常我不会定义一个函数来执行多个操作,但在这种情况下,我必须只创建一个函数并考虑如何返回多个值。我的第一种方法是创建一个采用如下引用参数的函数:
void my_func(
vector<double>& numbers,
double& min,
double& max,
double& mean,
double& median
);
但是继续编写程序,我开始认为这个解决方案使用了太多参数,也许建议的其他解决方案(使用struct)会更好。你会如何使用struct 来解决这个问题?如何从函数返回多个值?
【问题讨论】:
-
你不会从一个函数中返回多个值,这是不可能的。相反,您返回 一个 结构实例,其中包含多个成员(例如
min、max等成员)。 -
在有用且可能的情况下使用encapsulation。在这里它是可能且有用的,因此您应该在此处使用答案中建议的结构(例如统计信息)。
-
如果你使用的是 c++11,你可能想看看std::tuple
标签: c++ struct parameter-passing return-value