2016-05-15 2 views
1

Будет ли final_result удерживать серию всех результатов от вызова рекурсивной функции? Я получаю seg ошибки, но он компилируется. Я уверен, что это не сработает. Но если мне нужно было сохранить все результаты в структуре данных, как бы я это сделал?Как определить, инициализировать и использовать - вектор <вектор <пара < int,int >, int>> v в 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

No. Смысл последнего утверждения является назначить указатель на функцию '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); 
} 
Смежные вопросы