list<int>L[]=new list<int>[20];
这将导致错误“数组初始化程序必须是初始化程序 清单” 初始化列表有什么问题?
list<int> L[100];
列表[]也是L的意思
list<int> *L=new list<int>[20]
为什么这样做有效?
如果可能的话,请为我简要说明每个案例,因为我是STL的新手
答案 0 :(得分:3)
new list<int>[20]
动态分配20个list<int>
对象的数组,并返回一个list<int>*
指针。因此,您需要一个list<int>*
变量来接收该指针:
list<int> *L = new list<int>[20];
...
delete[] L;
list<int> L[]
没有声明指针,而是声明了一个未指定大小的静态数组。您唯一可以分配给它的是包含所需数组元素的初始化列表,因此编译器可以推断出数组的大小:
list<int> L[] = {a_list_object, another_list_object, ...};
list<int> L[100];
声明了一个100个list<int>
对象的静态数组。不涉及任何指针。