2017-07-09 58 views
0

我想使用矢量矢量插入多個數組。
對於I/P是這樣的:使用矢量矢量的多個數組

2 : Number of array (can be vary)  

3 1 2 3 : 3(size of array) 1 2 3(elements in array)  

4 4 5 6 7 : 4(size of array) 4 5 6 7 (elements in array)  

然後,我需要對它進行一些操作。
所有I/P都由用戶輸入。只給出它的範圍。

2 <= No of array <= 10 


1 <= Elements in array <= 1000000 

對於上面我嘗試以下方法:

int main() 
{ 
    int no_of_array, size; 
    long int num; 
    int j = 0; 

    cin >> no_of_array; 

1路:

vector < vector<int> > array_vector[no_of_array]; 
    while(no_of_array --) 
    { 
     cin >>size; 
     for(int i = 0; i < size ; i++) 
      { 
       cin >> num; 
       array_vector[j].push_back({num}); 
      } 
      j++; 
    } 
    cout<< vector_array[1][2]; // Error 

第二個辦法:

vector< vector<int> > array_vector; 
while(no_of_array --) 
{ 
    cin >> size; 
    for(int i = 0 ; i < size ; i++) 
    { 
     cin >> num; 
     array_vector[j].push_back(num); 
    } 
    j++; 
} 
cout<< vector_array[1][2];  // Error  

第三方式:(工作)

vector<vector<int> > array_vector; 
for(int i = 0 ; i < no_of_array ; i++) 
{ 
    cin >> size; 
    vector<int> v; 
    for(int j = 0 ; j < size ; j++) 
    { 

     cin >> num; 
     v.push_back(num); 
    } 
    array_vector.push_back(v); 
}  
cout<<array_vector[1][2]; // No Error   

我讀的地方第三種載體向量方式不適合競爭性編程。爲什麼?
用前兩種方法遍歷元素時我犯了什麼錯誤?

+4

「......不適合競爭力的編程......」 - 那又怎麼樣?那些「競爭性編程」網站並不關心最佳實踐或編寫可維護的代碼。不要浪費你的時間在他們身上。無論如何,你只是要學習壞習慣和你很可能永遠不會在真實世界中使用的東西。寫*真正*程序並閱讀[好書](https://stackoverflow.com/questions/388242/the-definitive-c-book-guide-and-list)。 –

+0

@ Jesper Juhl真正的編程?請,你能舉個例子嗎? – Tushar

+2

我的意思是寫真正的程序,你實際上*需要*或*想*寫,而不是從競爭性編程網站的愚蠢問題的解決方案。 –

回答

1

你可以試試下面的代碼

int main(int argc,char* argv[]) 
{ 
    unsigned int num; 
    int elm; 
    unsigned int size; 

    std::cout << "Enter the number of rows" << std::endl; 
    std::cin >> num; 
    std::vector<std::vector<int> > a(num,std::vector<int>(0,0)); 

    for(unsigned int i=0;i<num;i++) 
    { 
     std::cout << "Enter the size of " << i+1 << "array:" << std::endl; 
     std::cin >> size; 

     for(unsigned int j=0;j<size;j++) 
     { 
      std::cout << "Enter the element" <<std::endl; 
      std::cin >> elm; 

      a[i].push_back(elm); 
     } 
    } 

    for(unsigned int i=0;i<a.size();i++) 
    { 
     for(unsigned int j=0;j<a[i].size();j++) 
     { 
      std::cout << "Element at [" <<i<<"][" <<j <<"] is " << a[i][j] <<std::endl; 
     } 
    } 

    return 0; 
}