2016-05-15 139 views
1

final_result是否會保存一系列來自遞歸函數調用的結果?我得到seg故障,但它編譯。 我很確定這不起作用。但是,如果我需要將所有結果存儲在數據結構中,我該怎麼做?如何定義,初始化和使用 - vector <vector <pair < int,int >,int>> v in C++?

vector< vector < pair < int,int> > > result; 

vector< vector < pair < int,int> > > recursive_function() 
{ 
    if(condition_met) //never met on first call 
    { 
    result.push_back(a); //a is a vector< pair < int,int> > 
    return result; 
    } 
    else 
    { 
    return result; 
    } 
    //does something 
    recursive_function(); 
    recursive_function(); 
} 

vector< vector < pair < int,int> > > final_result; 
final_result = recursive_function; 
+3

號的最後一條語句的意思是將指向函數的指針賦給'final_result'並且會發出編譯錯誤。 – MikeCAT

+0

請發佈編譯的實際C++代碼。這是不可能的,因爲代碼無法工作。 – xaxxon

回答

1

你爲什麼不只是讓你的生活更輕鬆,只是通過你積累的結果作爲參考參數對象:

void recursive_function(vector<vector<pair<int, int>>> & result) { 
    result.emplace_back(); 
    if (rand() % 2) 
     recursive_function(result); 
} 

int main() { 
    vector<vector<pair<int, int>>> result; 
    recursive_function(result); 
} 
相關問題