有关于c++中设置动态数组长度的问题,新手求教!
看到书本上这么定义过:
"数组定义的形式为 类型名 数组名[常量表达式](e.g:int a[10])"
而不允许对数组的大小做动态的定义,技术组的大小不依赖于程序运行过程中变量的值.例子,如果像下面定义数组是不行的:
int a;cin>>a;//输入a数组的长度int a[n];//试图用n来决定数组的长度
int *a = new int[n];//这样a就可以看做是一个有n个元素的一维数组了
[解决办法]
1.动态数组实际上并不是一个严格意义上的数组,
它是先声明一个指针,再以它只想一个后来分配的连续存储空间。
这个实际上是一个连续存储的链表的实现。
2.编译器需要在编译的时候确定大小 这个与数组的存放与堆还有栈的机制好像无关,自己感觉数组时存放在栈上的。
3.可以采用new 模拟动态数组。
4.采用泛型算法,传入指针范围即可!
[解决办法]
只要是编译型方式生成可执行程序,在编译器就要确定数组的大小,当然不可以用变量。因为在程序运行时,这个数组不是在堆上创建,而是在栈上创建。解决此问题,首先想到的办法是在堆上维护动态数组,但此方法需要自己维护内存的使用,安全性不高。因此可以用STL中的容器来管理。STL的容器与算法配合,可以实现各种需要的功能。
[解决办法]