这个习题需要注意以下知识点:
1. C++ 支持动态数组,
可以用 int * p = new int [XXX];这样来定义.
这样定义的动态数组,
如果是 语言内置类型的(比如 int 之类),是没有进行过初始化的;
如果是 类类型的 ,会调用 默认的构造函数.
如果希望 内置类型也进行初始化,则需要加个空括号
int *p = new int[XXXX]();
这样就会初始化一个值了.
2.
动态数组占用 堆内存(Heap),需要以
delete [] p;
这样的语句来回收内存.
不能落下那个 [],否则会 出现 memory leak.
#include<iostream>
#include<string>
#include<vector>
using std::cin;
using std::cout;
using std::endl;
using std::vector;
using std::string;
int main()
{
vector<int> vecInput;
int iTemp = 0;
while(cin>>iTemp)
{
if(iTemp==0)
{
break;
}
vecInput.push_back(iTemp);
}
int *arrConvert = new int[vecInput.size()]();
for(int i=0;i<vecInput.size();i++)
{
arrConvert[i] = vecInput[i];
}
delete [] arrConvert;
return 0;
}