首页 > 解决方案 > STL c ++中不同类型的列表声明的错误

问题描述

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

这给出了错误“数组初始化程序必须是初始化程序列表”初始化列表有什么问题,例如:

list<int> L[100];

list[] L 也意味着什么

list<int> *L=new list<int>[20] 为什么这行得通?

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

标签: c++liststl

解决方案


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


推荐阅读