2012-07-10 47 views
-4

何時應該使用向量以及何時使用普通數組。同樣在我的一個代碼中,我發現了一個奇怪的問題。在C++中使用向量

class TwoTrains 
    { 
      public: 
      int pass(int t1, int t2, vector <int>); 
    }; 

int TwoTrains::pass(int t1, int t2, vector <int> times) 
    { 
     int size_of_array=(int)times.size(); 
     for(int i=0;i<size_of_array;i++) 
     { 
       cout<<times[i]<<endl; 
     } 
     return 0; 
    } 

這將編譯,但是當我使用它提供了一個error.Why -

for(int i=0; i< times.size();i++)  
+5

99%的時間你可能會想要一個向量。 – chris 2012-07-10 20:14:19

+2

將'int'投射到'int'有什麼意義?這沒有意義。 – Linuxios 2012-07-10 20:14:48

+0

@Linuxios,IIRC,'std :: vector :: size_type'是一個'unsigned int'。 – chris 2012-07-10 20:15:14

回答

6

vector是你想要的。爲普通用戶提供數組。

for(int i=0; i< times.size();i++)  

沒有給出錯誤,但警告(與unsigned比較signed)。使用

for(size_t i=0; i< times.size();i++) 

for(int i=0; i<(int) times.size();i++) 

當你不需要索引,使用迭代器,爲0A0D通知:

for(vector<int>::iterator it = times.begin(); it!=times.end();++it){ 
    cout<<*it; 
} 

甚至

for(int t: times){ 
    cout<<t; 
} 

與C + +11

+5

..或使用迭代器。 – 2012-07-10 20:19:31

+2

我對此感到不好,但作爲一個好習慣,只需打印'const_iterator'即可。 – chris 2012-07-10 20:28:18