您的位置:首页 > 编程语言 > C语言/C++

[C++学习] C++ Primer 第4版 习题4.28 C++动态数组

2012-04-02 21:38 288 查看
这个习题需要注意以下知识点:



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;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: