新手小疑问,求大牛帮忙下
#include<iostream>
#include<vector>
using namespace std;
int main()
{
vector<int> v;
int a;
while(cin>>a)
v.push_back(a);
int *p=new int[v.size()];
int *t=p;
for(vector<int>::iterator iter=v.begin();iter!=v.end();iter++,*t++)
{
*t=*iter;
cout<<*t;
}
delete[]p;
return 0;
}
在对数组复制vector元素的时候,为什么需要建立一个指针*t=p;
为何直接将*iter赋值给*p 最后程序会运行奔溃呢?
[解决办法]
#include<iostream>
#include<vector>
using namespace std;
int main()
{
vector<int> v;
int a;
while(cin>>a)
v.push_back(a);
int *p=new int[v.size()];
int *t=p;
for(vector<int>::iterator iter=v.begin();iter!=v.end();iter++,*t++)
{
*t=*iter;
cout<<*t;
}
delete[]p; //因为你赋值的过程指针被移动了。所以要重新定义个指针保存头地址,才能正确释放内存···
return 0;
}