-4

我们什么时候应该使用向量,什么时候应该使用普通数组。同样在我的一个代码中,我发现了一个奇怪的问题。

 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;  
     }  

这个编译但是当我使用它时它给出了一个错误。为什么 -

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

1 回答 1

6

vector是你想要的。为纯 C 用户提供数组。

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

不给出错误,但给出警告(与 比较signedunsigned。利用

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

于 2012-07-10T20:17:41.007 回答