Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > C/C++: Общие вопросы > массив с изменяющимся числом элементом


Автор: Nikita_85 30.7.2007, 09:00
Здравствуйте!

В моей программе размер массива зависит от входного файла. подскажите, пожалуйста, можно ли создать массив с изменяющимся числом элементом, а не с постоянным.

Заранее спасибо! 

Автор: slutsker 30.7.2007, 09:08
Код

int arr_size=20;//это твой рамер массива
int *array = new int[arr_size];

Автор: NoNo 30.7.2007, 14:35
Попробуй использовать контейнеры

Автор: Armenia 30.7.2007, 22:09
а vector тебе не подойдет?
думаю как раз тебе это и нужен.

Автор: Dogo 30.7.2007, 23:54
Код
int sizeOfFile; //размер файла в байтах
int *pArray; //Указатель на начало участка выделяемой под массив памяти (фактически указатель на первый элемент массива)
pArray = (int *) malloc(sizeOfFile*sizeof(int)); //Ф-ия malloc резервирует участок памяти равный sizeOfFile*sizeof(int)

Получить доступ к элементу такого массива можно обычным способом pArray[i]

Автор: JackYF 31.7.2007, 00:49
Цитата(Dogo @  30.7.2007,  23:54 Найти цитируемый пост)
pArray = (int *) malloc(sizeOfFile*sizeof(int)); //Ф-ия malloc резервирует участок памяти равный sizeOfFile*sizeof(int)

У, уйди нечистая сила... маллоки юзать в коде на С++... извращенец.

Автор: En_t_end 31.7.2007, 11:42
JackYF, 
Цитата(JackYF @  31.7.2007,  04:49 Найти цитируемый пост)
У, уйди нечистая сила... маллоки юзать в коде на С++... извращенец.

А где здесь требование C++ кода ? smile

Автор: akizelokro 31.7.2007, 12:13
Просьба указать максимальный размер файла, а потом определиться с максимально возможным размером памяти, который ты собираешься выделить под изменяемый.

Автор: JackYF 31.7.2007, 13:42
Цитата(En_t_end @  31.7.2007,  11:42 Найти цитируемый пост)
А где здесь требование C++ кода ? smile 

а где требования сишного? имхо, мы же не ядро Линукса пишем все-таки... а по-умолчанию у нас в разделе вроде как С++. Я прав?

Имхо, прямые вызовы к/ре/м-аллоков везде, кроме заведомо сишного кода, морально устарели. new([])/delete([]) - достойная замена.

Автор: Kuvaldis 31.7.2007, 13:48
JackYF, 
Юзать можно все: главное (как и с пивом и водкой) - не смешивать. smile

Добавлено через 1 минуту
Упс... 1000-й пост

Автор: JackYF 31.7.2007, 16:18
Цитата(Kuvaldis @  31.7.2007,  13:48 Найти цитируемый пост)
Юзать можно все

 smile  smile ну это да smile стенка вон тоже универсальный инструмент, применяется во всех областях  smile 

Автор: En_t_end 31.7.2007, 18:37
Цитата(JackYF @  31.7.2007,  20:18 Найти цитируемый пост)
 ну это да  стенка вон тоже универсальный инструмент, применяется во всех областях   

Нет, ИМХО разные вещи. Скорее использовать ручную дрель и современную автоматическую.
Я согласен с Kuvaldis'ом, смешивать нельзя это точно, но ничто не запрещает использовать C-style memory control для отдельно взятой еденицы компиляции в конкретном проекте пусть даже на C++. В одной еденице смешивать действительно не стоит. А вообще вопрос -фигня, и особого внимания, ИМХО не стоит smile

Автор: JackYF 1.8.2007, 02:07
Цитата(En_t_end @  31.7.2007,  18:37 Найти цитируемый пост)
но ничто не запрещает использовать C-style memory control для отдельно взятой еденицы компиляции в конкретном проекте пусть даже на C++.

соглашусь.

Автор: Rockie 1.8.2007, 14:10
Цитата(Nikita_85 @  30.7.2007,  09:00 Найти цитируемый пост)
В моей программе размер массива зависит от входного файла.


Nikita_85, файл изменяется после открытия? Если нет, то что мешает сначала узнать размер файла, а потом создать массив соответствующего размера.


Автор: bsa 1.8.2007, 14:32
Имхо, есть варианты:
std::list (если много операций добавления/удаления в/из середины массива)
std::vector (если только добавление/удаление в/из конца)
malloc/realloc - почти тоже, что и std::vector, только на C

Автор: Damarus 1.8.2007, 18:17
Цитата(bsa @  1.8.2007,  15:32 Найти цитируемый пост)
malloc/realloc - почти тоже, что и std::vector, только на C

Действительно... Почти...  smile 

Автор: Любитель 1.8.2007, 23:16
 smile 

Автор: bsa 2.8.2007, 11:11
Цитата(Damarus @ 1.8.2007,  18:17)
Цитата(bsa @  1.8.2007,  15:32 Найти цитируемый пост)
malloc/realloc - почти тоже, что и std::vector, только на C

Действительно... Почти...  smile

Зря выдрал из контекста. Я имел в виду добавление/удаление в/с конца.
И вообще, данный пост не предназначался тем, кто знает отличия.  smile 

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)