我们何时应该使用向量以及何时使用普通数组.在我的一个代码中,我发现了一个奇怪的问题.
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)
vector是你想要的.为普通C用户提供数组.
for(int i=0; i< times.size();i++)
Run Code Online (Sandbox Code Playgroud)
没有给出错误,但警告(比较signed有unsigned).使用
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