2015-04-14 3 views
-1

не могли бы вы рассказать мне, что вызывает ошибку сегментации в этом фрагменте кода. Примечание: это решение проблемы TopCoder.Что вызывает ошибку сегментации?

class GridGenerator{ 
public: 
int generate(vector <int> row, vector <int> col){ 
int i,j; 
int n=col.size(); 
vector<vector<int>>vec; 
    for(i=0;i<n;i++) 
     { 
      vec[0][i]=col[i]; 
      vec[i][0]=row[i]; 
     } 
for(i=1;i<n;i++) 
{ 
    for(j=1;j<n;j++) 
     vec[i][j]=vec[i-1][j]+vec[i][j-1]+vec[i-1][j-1]; 
} 
return vec[n-1][n-1]; 
} 
}; 

ответ

6

vector<vector<int>>vec; объявляет пустой вектор, доступ к элементам в ней неопределенное поведение, так как она не имеет элементов, чтобы начать с.

+0

OP хочет сказать 'vector > vec (n, vector (n));'. Не могли бы вы добавить его к своему ответу? – AndyG

+1

@ AndyG Я подумал об этом, и нет. Это было бы контрпродуктивным имо. Думаю, ему было бы лучше, если бы он сам искал инициализацию вектора. :) –

+0

спасибо вам большое и извините за то, что уделили время :) – BaherZ

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