更新时间:2023-11-11 17:26:10
在Vs2008上运行,会报错。
错误的原因有:
(1)vector<int> ivec = { 1,2,3,4,5,6,7 }; vector不能直接这样初始化赋值。可以用这样来替换
vector<int> ivec;
for(int i=1;i<8;i++){
ivec.push_back(i);
}
(2)函数写的很不好,直接用这样写就行了,根本没必要传ivec.begin()给函数。因为你已经传了ivec给函数,函数就会得到ivec的所有信息,不必画蛇添足。
#include "iostream"
#include <vector>
using namespace std;
void factorial(vector<int> ivec) {
vector<int>::iterator it;
for(it=ivec.begin();it!=ivec.end();it++)
cout<<*it<<endl;
}
int main()
{
vector<int> ivec;
for(int i=1;i<8;i++){
ivec.push_back(i);
}
factorial(ivec);
return 0;
}
如果你非要画蛇添足的做法,可以这样写,至于为什么要加个&符号,是因为不引用的的话就会新建个vector,那么新建的vector里面是没有数据的,所以就肯定错了。
#include "iostream"
#include <vector>
using namespace std;
void factorial(vector<int> &ivec,vector<int>::iterator iter) {
vector<int>::iterator it;
for(it=iter;it!=ivec.end();it++)
cout<<*it<<endl;
}
int main()
{
vector<int> ivec;
for(int i=1;i<8;i++){
ivec.push_back(i);
}
factorial(ivec,ivec.begin());
return 0;
}