int DFS(a, b,c,d)
{
first=a+b;
second=c+d;
return(first,second);
}
solution, cost_limit = DFS(a, b,c,d);
Могу ли я сделать что-то вроде этого? и как?Могу ли я назначить в 2 переменных одновременно на C++?
int DFS(a, b,c,d)
{
first=a+b;
second=c+d;
return(first,second);
}
solution, cost_limit = DFS(a, b,c,d);
Могу ли я сделать что-то вроде этого? и как?Могу ли я назначить в 2 переменных одновременно на C++?
В 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);
Если C++ 11 не является вариантом, библиотека [Boost Tuple library] (http: //www.boost. org/doc/libs/release/libs/tuple/doc/tuple_users_guide.html) предоставляет эти функции. –
Если C++ 11 не является опцией, вы все равно можете использовать 'std :: пару C++ 03 '
@Antionio: но в C++ 03 нет 'tie', поэтому он выглядит довольно уродливым: 'std :: pair
Вы можете сделать это двумя способами:
Создать-структуру с двумя значениями и возвращает его:
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);
Одна вещь, которую вы должны знать, что если а, Ь, с, d не являются базовыми типами, но экземпляры класса вы определили, скажем, Foo, и перегрузить оператор = класса, вы должны убедиться в том, что оператор вернет ссылку на объект, который назначен, иначе вы не сможете назначать цепочки (решение = cost_limit = DFS (..) будет присваивать только cost_limit). Оператор = должен выглядеть следующим образом:
Foo& Foo::operator =(const Foo& other)
{
//do stuff
return other;
}
Если 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);
Непонятно, что вы здесь задаете. Я бы предложил вам объяснить, что вы подразумеваете под назначением, и что вы подразумеваете под переменной. –