2013-09-28 3 views
2

Как вернуть целое число и вектор из функции. В C++ 11 я могу использовать кортеж. Но я должен использовать стандарт C++ 98.Как вернуть два значения из функции в C++?

проблема, как это,

int myfunction(parameter 1,parameter 2) 
{ 
    vector<int> created_here; 
    //do something with created here 
    return int & created_here both 

} 

Как я могу это сделать. Кстати, я должен использовать свою функцию recursively.So Я думал, способ, как это,

int n; 
vector<int> A; 
int myfunction(int pos,int mask_cities,vector<int> &A) 
{ 
    if(mask = (1<<n)-1) 
     return 0; 
    vector<int> created_here; 
    int ans = 999999; 
    for(int i=0;i<n;++i){ 
     int tmp = myfunction(pos+1,mask|1<<i,created_here); 
     if(tmp<ans){ 
      A = created_here; 
      ans = tmp; 
     } 
    } 
    return ans; 

} 

это будет работать? Или есть лучшее решение. и Кстати, моя текущая задача нахождения решения коммивояжер problem.that следует уточнить мои потребности

+1

У этого еще есть 'std :: pair'. – chris

+0

его просто int –

+0

В случае, если вы не разобрали комментарий chris, C++ 98 имеет' std :: pair <> ', если все, что вам нужно, - это два значения. и мои 2-центы, вам лучше иметь предложение о спасении в этой рекурсивной функции, или вы быстро достигнете своего предела вызова. – WhozCraig

ответ

5

Использование std::pair<>:

std::pair<int, std::vector<int> > myfunction() { 
    int i; 
    std::vector<int> v; 

    return std::make_pair(i, v); 
} 
2

Лучший способ заключается в использовании структуры данных.

struct MyParam 
{ 
    int myInt; 
    vector<int> myVect; 
} ; 

MyParam myfunction(MyParam myParam) 
{ 
    return myParam; 
} 
0

Это не будет хорошим выбором, чтобы создать вектор в вашей функции и использовать его, если вы будете делать рекурсивные вызовы функций.

Я хотел бы предложить вам пройти эти 2 параметра по ссылке из вашей основной функции (а не объявить глобально (как OP) и манипулировать ими, как вы идете, вызывая функцию рекурсивно, а не возвращать их в каждом вызове.

Смежные вопросы