我使用了下面给定的函数inpvec,但它不起作用,因为当我在main函数中使用函数时,没有使用迭代器的输出......
#include <iostream>
#include <vector>
using namespace std;
void inpvec(vector <int> a, int veclen){
int b;
for(int i=0;i<veclen;i++){
cin>>b;
a.push_back(b);
}
}
int main()
{
int n,j;
cin >>n;
vector <int> vac;
vector <int> pat;
vector <int>::iterator it;
inpvec(vac, n);
inpvec(pat, n);
for(it=vac.begin();it!=vac.end();it++){
cout<<*it<<" ";
}
for(it=pat.begin();it!=pat.end();it++){
cout<<*it<<" ";
}
return 0;
}
答案 0 :(得分:4)
你的功能
new float[1000]
复制第一个参数void inpvec(vector <int> a, int veclen)
。所以调用代码没有区别。
将其作为参考将改变
a
答案 1 :(得分:2)
您正在传递矢量副本:
void inpvec(vector <int> a, int veclen)
您需要通过引用传递它:
void inpvec(vector <int>& a, int veclen)
________________________^_______________