2

関数から整数とベクトルを返す方法。C++11 ではタプルを使用できます。しかし、C++98 標準を使用する必要があります。

問題はこのようなもので、

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

}

どうやってやるの。ところで、私は自分の関数を再帰的に使わなければならないので、このような方法を考えました。

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; 

}

これは機能しますか?または、より良い解決策があります。ところで、私の実際の問題は、巡回セールスマンの問題の解決策を見つけることです。それは私のニーズを明確にするはずです

4

3 に答える 3

6

使用std::pair<>:

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

    return std::make_pair(i, v);
}
于 2013-09-28T04:57:21.713 に答える
2

最良の方法は、データ構造を使用することです。

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

MyParam myfunction( MyParam myParam )
{
    return myParam;
}
于 2013-09-28T05:01:14.953 に答える