我正在编写一个函数,其中我传递3个不同(struct)数据类型的向量1个向量将包含一些值,并且在执行所有操作之后,我正在填充具有不同数据集的其他两个向量。所以我的问题是函数是否可能返回多于1个变量/ struct / vectors。
例如..
func_name(vect1,&vect2,&vect3) //function definition
{
// steps of performing some operations
// enter code here vect1 contains data, vect2 & vect3 are empty
// after performing operation vect2 & vect3 filled with different set of data
is it possible to return vect2 & vect3 simultaneously.
}
func_name(vect1,vect2,vect3) // function calling.
答案 0 :(得分:2)
template<typename T>
void func_name(std::vector<T>& vect1,
std::vector<T>& vect2,
std::vector<T>& vect3) //..Notice & sign
{
/* Your Processing */
}
func_name(vect1,vect2,vect3);
//Now all vect1, vect2 and vect3 will be updated as per func_name processing
如果您不必更新const std::vector<T>& vect1
vect1
作为第一个参数
答案 1 :(得分:1)
有趣的是,这是大多数高级语言的缺陷,在汇编程序级别上没有这样的限制。我认为它的主要原因是我们在表达式中使用函数的返回值的方式。
在我看来,有两种可用的解决方案:返回结构/元组,或传递指针返回参数。
typedef struct {
int a, b, c;
} MyReturnType;
MyReturnType structFunc(...) {
return (MyReturnType){
.a = ...,
.b = ...,
.c = ...
};
}
//somewhere else
structFunc(...).c
或者,使用指针:
void pointerFunc(int* outA, int* outB, int* outC) {
*outA = ...;
*outB = ...;
*outC = ...;
}
//somewhere else
int a, b, c;
pointerFunc(&a, &b, &c);
我通常更喜欢指针方法,因为函数声明独立存在。但是,结构方法具有它的价值,并且如果实际只使用一个返回值,它可以减少调用方面的混乱。