int DFS(a, b,c,d)
{
first=a+b;
second=c+d;
return(first,second);
}
solution, cost_limit = DFS(a, b,c,d);
posso fare qualcosa di simile? e come?Posso assegnare 2 variabili contemporaneamente al C++?
int DFS(a, b,c,d)
{
first=a+b;
second=c+d;
return(first,second);
}
solution, cost_limit = DFS(a, b,c,d);
posso fare qualcosa di simile? e come?Posso assegnare 2 variabili contemporaneamente al C++?
In C++ 11 è possibile utilizzare i tipi di tupla e tie
per quello.
#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);
Se C++ 11 non è un'opzione, la [Boost Tuple library] (http: //www.boost. org/doc/libs/release/libs/tuple/doc/tuple_users_guide.html) fornisce queste funzionalità. –
Se C++ 11 non è un'opzione, è comunque possibile utilizzare 'std :: pair
@Antionio: ma non ci sono 'tie' in C++ 03, quindi risulta piuttosto brutto: 'std :: pair
Si può fare in due modi:
Creare una struttura con due valori e restituirla:
struct result
{
int first;
int second;
};
struct result DFS(a, b, c, d)
{
// code
}
Avere fuori parametri:
void DFS(a, b, c, d, int& first, int& second)
{
// assigning first and second will be visible outside
}
chiamata con:
DFS(a, b, c, d, first, second);
Una cosa che si dovrebbe sapere è che se a, b, c, d non sono tipi di base, ma le istanze di una classe definita, diciamo Foo, e si sovraccarica l'operatore = della classe, è necessario assicurarsi che l'operatore restituisca un riferimento all'oggetto assegnato, altrimenti non sarà possibile assegnare assegnazioni a catena (solution = cost_limit = DFS (..) assegnerà solo a cost_limit). L'operatore = dovrebbe essere il seguente:
Foo& Foo::operator =(const Foo& other)
{
//do stuff
return other;
}
Se C++ 11 non è possibile, è possibile utilizzare riferimenti.
Passando un riferimento alle variabili nei parametri.
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);
Non è chiaro cosa stai chiedendo qui. Ti suggerirei di spiegare cosa intendi per incarico e cosa intendi per variabile. –