我们何时应该使用向量以及何时使用普通数组。同样在我的一个代码中,我发现了一个奇怪的问题。
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++)
答案 0 :(得分:6)
vector
就是你想要的。为普通C用户提供数组。
for(int i=0; i< times.size();i++)
不会出现任何错误,但会发出警告(将signed
与unsigned
进行比较)。使用
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