int DFS(a, b,c,d)
{
first=a+b;
second=c+d;
return(first,second);
}
solution, cost_limit = DFS(a, b,c,d);
¿Puedo hacer algo como esto? ¿y cómo?¿Puedo asignar en 2 variables al mismo tiempo en C++?
int DFS(a, b,c,d)
{
first=a+b;
second=c+d;
return(first,second);
}
solution, cost_limit = DFS(a, b,c,d);
¿Puedo hacer algo como esto? ¿y cómo?¿Puedo asignar en 2 variables al mismo tiempo en C++?
En C++ 11 puede usar los tipos de tupla y tie
para eso.
#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);
Si C++ 11 no es una opción, la [biblioteca Boost Tuple] (http: //www.boost. org/doc/libs/release/libs/tuple/doc/tuple_users_guide.html) proporciona estas características. –
Si C++ 11 no es una opción, aún puede usar C++ 03 'std :: pair
@Antionio: pero no hay 'empate' en C++ 03, por lo que se ve bastante feo: 'std :: pair
Puede hacer esto de dos maneras:
Crear una estructura con dos valores y devolverlo:
struct result
{
int first;
int second;
};
struct result DFS(a, b, c, d)
{
// code
}
Tener a cabo parámetros:
void DFS(a, b, c, d, int& first, int& second)
{
// assigning first and second will be visible outside
}
llamada con:
DFS(a, b, c, d, first, second);
Esto claramente no es lo que el OP está pidiendo. Él está pidiendo devolver dos valores separados en dos variables separadas. – Szabolcs
@Szabolcs: Eso no estaba claro. – Tudor
Esto no es lo que él pidió. Él quiere el camino pythonic, que significa 'solución = primero; cost_limit = second; ' – filmor
Una cosa que debe saber es que si a, b, c, d no son tipos base, pero las instancias de una clase que ha definido, digamos Foo, y se sobrecarga el operador = de la clase, debe asegurarse de que el operador devolverá una referencia al objeto que se le asignó, de lo contrario no podrá encadenar las asignaciones (solution = cost_limit = DFS (..) solo asignará cost_limit). El operador = debería verse así:
Foo& Foo::operator =(const Foo& other)
{
//do stuff
return other;
}
Si C++ 11 no es posible, es posible utilizar referencias.
Pasando una referencia a las variables en los parámetros.
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);
No está muy claro lo que estás preguntando aquí. Sugiero que expliques a qué te refieres con asignar, y qué quieres decir con una variable. –