Ошибка для другого типа объявления списка в STL c ++ - PullRequest
0 голосов
/ 25 мая 2019
list<int>L[]=new list<int>[20];

Это дает ошибку "инициализатор массива должен быть инициализатором список" Что не так с инициализирующим списком, как:

list<int> L[100];

Также список [] L означает что-нибудь

list<int> *L=new list<int>[20] Почему это работает?

Пожалуйста, дайте мне краткое объяснение для каждого из случаев, если это возможно, так как я новичок в STL

1 Ответ

3 голосов
/ 25 мая 2019

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> объектов. Указатели не задействованы.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...