c++ - STL c ++中不同类型的列表声明的错误
问题描述
list<int>L[]=new list<int>[20];
这给出了错误“数组初始化程序必须是初始化程序列表”初始化列表有什么问题,例如:
list<int> L[100];
list[] L 也意味着什么
list<int> *L=new list<int>[20]
为什么这行得通?
如果可能的话,请给我简要解释每个案例,因为我是 STL 的新手
解决方案
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>
对象的静态数组。不涉及指针。
推荐阅读
- javascript - 类名 绑定和全局类
- jquery - 如何加载在 JsTree 上检查的数据
- notepad++ - 在记事本++中交换正负值?
- c++ - 通过鼠标单击与 Qlabel 交互
- angular - 部署中基于环境的大量清单文件
- python - 将变量 (x) 设置为等于从文本文件中读取的字符串,然后在条件 if 语句中使用 x
- javascript - Javascript - 使用类的正确方法
- django - 鹡鸰的模态Formbuilder?
- node.js - 从 Google Passport 策略中检索 OAuth2 客户端
- scala - 玩迁移到 2..6 和 Scala 2.12:使用 WithFilter 时的编译问题