2014-05-23 123 views
0

我有這個向量的int從中我必須將值保存到一個二維數組。我雖然很直接,但看起來對於i+j,當j變成0時,下一個要保存的整數保存在最後一個整數上。它們重疊。你能告訴我如何解決它嗎?下面是代碼:從向量保存到二維數組


vector<int> temp_table;//filled it in previous code, just for info 
int** arr_table =new int* [number_of_states]; 
for(int i = 0; i < number_of_states; i++) 
{ 
arr_table[i] = new int[alphabet.size()]; 
} 

for(int i=0;i<number_of_states;i++) 
{ 
    for(int j=0;j<alphabet.size();j++) 
    { 
     arr_table[i][j]=temp_table.at(i+j);//This is where the overlapping occurs 
     //when j=0.How to fix it to save the correct data? 
    } 
} 
for(int i=0;i<number_of_states;i++) 
{ 
    for(int j=0;j<alphabet.size();j++) 
    { 
     cout<<arr_table[i][j]<<" "; 
    } 
    cout<<endl; 
} 
+0

你的索引'temp_table'將是什麼像'(i * alphabet.size())+ j'。這取決於數據如何存儲在1d矢量中。 –

回答

0

您想在alphabet.size()擴展您的i索引,以考慮到已添加的行:

for(int i=0;i<number_of_states;i++) 
    for(int j=0;j<alphabet.size();j++) 
     arr_table[i][j]=temp_table.at(i * alphabet.size() + j);