int DFS(a, b,c,d)
{
first=a+b;
second=c+d;
return(first,second);
}
solution, cost_limit = DFS(a, b,c,d);
我可以做这样的事吗?如何?
答案 0 :(得分:17)
在C ++ 11中,您可以使用元组类型和tie
。
#include <tuple>
std::tuple<int, int> DFS (int a, int b, int c, int d)
{
return std::make_tuple(a + b, c + d);
}
...
int solution, cost_limit;
std::tie(solution, cost_limit) = DFS(a, b, c, d);
答案 1 :(得分:3)
你可以这两种方式:
创建一个包含两个值的结构并将其返回:
struct result
{
int first;
int second;
};
struct result DFS(a, b, c, d)
{
// code
}
有参数:
void DFS(a, b, c, d, int& first, int& second)
{
// assigning first and second will be visible outside
}
致电:
DFS(a, b, c, d, first, second);
答案 2 :(得分:2)
使用C ++ 17,您可以打开一对或元组的包装
auto[i, j] = pair<int, int>{1, 2};
cout << i << j << endl; //prints 12
auto[l, m, n] = tuple<int, int, int>{1, 2, 3};
cout << l << m << n << endl; //prints 123
答案 3 :(得分:1)
如果无法使用C ++ 11,则可以使用引用。
通过在参数中传递对变量的引用。
int DFS(int a, int b, int c, int d, int &cost_limit)
{
cost_limit = c + d;
return a + b;
}
int solution, cost_limit;
solution = DFS(a, b, c, d, cost_limit);
答案 4 :(得分:0)
你应该知道的一件事是,如果a,b,c,d不是基类型,而是你定义的类的实例,让我们说Foo,并且你重载了类的=运算符,你必须确保事实上,运算符将返回对已分配对象的引用,否则您将无法链接赋值(solution = cost_limit = DFS(..)将仅分配给cost_limit)。 =运算符应如下所示:
Foo& Foo::operator =(const Foo& other)
{
//do stuff
return other;
}