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 回答
0

如果要进行递归函数调用,在函数中创建向量并使用它不是一个好的选择。

我建议您通过主函数的引用传递这两个参数(而不是全局声明它(就像 OP 所做的那样)并在递归调用函数时操作它们,而不是在每次调用中返回它们。

于 2013-09-28T05:01:29.733 回答