在c ++中使用向量

-4 c++ vector

我们何时应该使用向量以及何时使用普通数组.在我的一个代码中,我发现了一个奇怪的问题.

 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;  
     }  
Run Code Online (Sandbox Code Playgroud)

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

 for(int i=0; i< times.size();i++)    
Run Code Online (Sandbox Code Playgroud)

Ria*_*iaD 6

vector是你想要的.为普通C用户提供数组.

for(int i=0; i< times.size();i++)    
Run Code Online (Sandbox Code Playgroud)

没有给出错误,但警告(比较signedunsigned).使用

for(size_t i=0; i< times.size();i++)  
Run Code Online (Sandbox Code Playgroud)

要么

for(int i=0; i<(int) times.size();i++)  
Run Code Online (Sandbox Code Playgroud)

由于您不需要索引,请使用迭代器,如0A0D通知:

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

甚至

for(int t: times){
    cout<<t;
}
Run Code Online (Sandbox Code Playgroud)

用C++ 11

  • ..或使用迭代器. (5认同)
  • 我说这个很糟糕,但作为一个好习惯,`const_iterator`只是打印. (2认同)