Автор
|
Тема: Как правильно работать с массивами?SOS!
|
dodger |
опубликован 23-10-2001 17:47 MSK
Что-то я не могу понять, почему я не могу работать с массивами от неопределенного кол-ва, т.е.int n; int array[n]; Компилятор выкидывает ошибку, что могу работать только с константой. Это все хорошо, а если нужно задать кол-во элементов массива, что тогда делать? В MSDN идет речь про какой-то subscription, что это такое?
|
Flex Ferrum
|
опубликован 23-10-2001 17:55 MSK
В С/С++ нет реализованных на уровне языка массивов с переменным количеством элементов. Для этой цели обычно используют библиотечный класс vector. |
server_mouse
|
опубликован 23-10-2001 18:17 MSK
Или указатель на тип. Создаёшь массив через new, убиваешь delete-ом. |
DenizK
|
опубликован 23-10-2001 22:24 MSK
угу, нужно узать либо STLевские контейнеры vector, list, stack, etc. либо MFCшные аналоги CArray, CObArray, ... |
cube
|
опубликован 24-10-2001 01:08 MSK
int n; int *array = new int[n];... delete array; какие проблемы? |
cube
|
опубликован 24-10-2001 01:10 MSK
точнееint n; ... int *array = new int[n]; ну дальше все правильно // спать пора |
necer
|
опубликован 24-10-2001 10:29 MSK
.... delete[] array |
server_mouse
|
опубликован 24-10-2001 11:04 MSK
Неужели так принципиально delete или delete[]? |
cube
|
опубликован 24-10-2001 11:30 MSK
Принципиально, когда удаляется массив указателей но объекты, т.е.CMyObject *o1 = new CMyObject(); CMyObject *o2 = new CMyObject[100]; ... delete o1; delete[] o2; кажется так. |
Flex Ferrum
|
опубликован 24-10-2001 12:27 MSK
2server_mouse: Если не хчешь иметь проблем с распределением памяти - то весьма принципиально. |
m_fox
|
опубликован 24-10-2001 17:04 MSK
оператор delete[] , обозначает, что для каждого элемента надо вызвать деструкторпривыкни всегда использовать скобки, чтобы небыло больно потом :) |
server_mouse
|
опубликован 24-10-2001 18:02 MSK
Но нафига мне деструкторы тех же char? Если не ошибаюсь компилятор их вообще не создаёт для ускорения работы, хотя с точки зрения идеологии ООП они есть. |
Demo_S
|
опубликован 25-10-2001 16:12 MSK
Подводя итог: int n; //сдесь вводишь это n // например cin>>n; int *array=new int[n]; //работаешь с массивом //for(int i=0;i<n;i++)array[i]=i; //Удаляешь массив, чтобы память выделенную под него освободить delete[] array;P.S.Если работаешь с обычными массивами int a[10]; то память освобождать не нужно. |