数组问题
[Discuz!]&Menu=yes" target="_blank">" border="0">c++ primer 第四版 习题4.28编写程序从标准输入设备读入的元素数据建立一个int型vector对象,然后动态创建一个与该vector对象大小一致的数组,把vector对象的所有元素复制给新数组。
小弟的程序是这样的,但是运行后会有下面的错误:Debug Assertion Failed!请高手指点。
#include<iostream>
#include<vector>
using namespace std;
int main()
{
vector<int> ivec;
int ival;
cout<<"Enter numbers:"<<endl;
cin>>ival;
while(ival != -1)
{
ivec.push_back(ival);
cin>>ival;
}
int *pi = new int[ivec.size()];
for(vector<int>::iterator iter = ivec.begin(); iter != ivec.end(); iter++, pi++ )
{
*pi = *iter;
cout<<*pi<<'\t';
}
delete [] pi;
return 0;
}
但是此程序如果没有释放内存那条语句就没有出错现象,为什么呢?还有如果重新定义一个指针并把原指针赋值给它也不会有错,不明白为什么
#include<iostream>
#include<vector>
using namespace std;
int main()
{
vector<int> ivec;
int ival;
cout<<"Enter numbers:"<<endl;
cin>>ival;
while(ival != -1)
{
ivec.push_back(ival);
cin>>ival;
}
int *pi = new int[ivec.size()];
int *pi2 = pi;
for(vector<int>::iterator iter = ivec.begin(); iter != ivec.end(); iter++, pi2++ )
{
*pi2 = *iter;
cout<<*pi2<<'\t';
}
delete [] pi;
return 0;
}