STL C ++中不同类型的列表声明错误

时间:2019-05-24 21:25:46

标签: c++ list stl

list<int>L[]=new list<int>[20];

这将导致错误“数组初始化程序必须是初始化程序       清单” 初始化列表有什么问题?

list<int> L[100];

列表[]也是L的意思

list<int> *L=new list<int>[20] 为什么这样做有效?

如果可能的话,请为我简要说明每个案例,因为我是STL的新手

1 个答案:

答案 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>对象的静态数组。不涉及任何指针。