首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C++ >

新手小疑问,求大牛帮忙下,该如何处理

2012-04-04 
新手小疑问,求大牛帮忙下#includeiostream#includevectorusing namespace stdint main(){vectorint

新手小疑问,求大牛帮忙下
#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;
}

热点排行