Модераторы: Daevaorn

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> массив с изменяющимся числом элементом 
:(
    Опции темы
Nikita_85
Дата 30.7.2007, 09:00 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 14
Регистрация: 24.7.2007

Репутация: нет
Всего: нет



Здравствуйте!

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

Заранее спасибо! 
PM MAIL   Вверх
slutsker
Дата 30.7.2007, 09:08 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 177
Регистрация: 24.5.2007

Репутация: нет
Всего: нет



Код

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

--------------------
Compiling...project.cppLinking...Embedding manifest...========== Build: 1 succeeded, 0 failed, 0 up-to-date, 0 skipped ==========
PM MAIL   Вверх
NoNo
Дата 30.7.2007, 14:35 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 109
Регистрация: 14.11.2006

Репутация: нет
Всего: нет



Попробуй использовать контейнеры
PM MAIL   Вверх
Armenia
Дата 30.7.2007, 22:09 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 53
Регистрация: 25.11.2006

Репутация: нет
Всего: 1



а vector тебе не подойдет?
думаю как раз тебе это и нужен.
PM   Вверх
Dogo
Дата 30.7.2007, 23:54 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 147
Регистрация: 20.2.2007
Где: Санкт-Петербург

Репутация: 1
Всего: 9



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

Получить доступ к элементу такого массива можно обычным способом pArray[i]
--------------------
 
PM MAIL ICQ   Вверх
JackYF
Дата 31.7.2007, 00:49 (ссылка) |    (голосов:3) Загрузка ... Загрузка ... Быстрая цитата Цитата


полуавантюрист
****


Профиль
Группа: Участник
Сообщений: 5814
Регистрация: 28.8.2004
Где: страна тысячи озё р

Репутация: 18
Всего: 162



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

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


--------------------
Пожаловаться на меня как модератора можно здесь.
PM MAIL Jabber   Вверх
En_t_end
Дата 31.7.2007, 11:42 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Участник Клуба
Сообщений: 2074
Регистрация: 4.12.2004

Репутация: 1
Всего: 20



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

А где здесь требование C++ кода ? smile
PM MAIL ICQ Skype GTalk Jabber   Вверх
akizelokro
Дата 31.7.2007, 12:13 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Крокодил
**


Профиль
Группа: Участник
Сообщений: 761
Регистрация: 30.7.2007

Репутация: 1
Всего: 5



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


--------------------
a = a + b; b = a - b; a = a - b;
PM MAIL   Вверх
JackYF
Дата 31.7.2007, 13:42 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


полуавантюрист
****


Профиль
Группа: Участник
Сообщений: 5814
Регистрация: 28.8.2004
Где: страна тысячи озё р

Репутация: 18
Всего: 162



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

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

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



--------------------
Пожаловаться на меня как модератора можно здесь.
PM MAIL Jabber   Вверх
Kuvaldis
Дата 31.7.2007, 13:48 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


механик-вредитель
***


Профиль
Группа: Участник Клуба
Сообщений: 1189
Регистрация: 16.6.2006
Где: Минск

Репутация: 11
Всего: 61



JackYF
Юзать можно все: главное (как и с пивом и водкой) - не смешивать. smile

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


--------------------
Помни - когда ты спишь, враг не дремлет
Спи чаще и дольше, изматывай врага бессоницей
PM MAIL ICQ   Вверх
JackYF
Дата 31.7.2007, 16:18 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


полуавантюрист
****


Профиль
Группа: Участник
Сообщений: 5814
Регистрация: 28.8.2004
Где: страна тысячи озё р

Репутация: 18
Всего: 162



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

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


--------------------
Пожаловаться на меня как модератора можно здесь.
PM MAIL Jabber   Вверх
En_t_end
Дата 31.7.2007, 18:37 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Участник Клуба
Сообщений: 2074
Регистрация: 4.12.2004

Репутация: 1
Всего: 20



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

Нет, ИМХО разные вещи. Скорее использовать ручную дрель и современную автоматическую.
Я согласен с Kuvaldis'ом, смешивать нельзя это точно, но ничто не запрещает использовать C-style memory control для отдельно взятой еденицы компиляции в конкретном проекте пусть даже на C++. В одной еденице смешивать действительно не стоит. А вообще вопрос -фигня, и особого внимания, ИМХО не стоит smile
PM MAIL ICQ Skype GTalk Jabber   Вверх
JackYF
Дата 1.8.2007, 02:07 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


полуавантюрист
****


Профиль
Группа: Участник
Сообщений: 5814
Регистрация: 28.8.2004
Где: страна тысячи озё р

Репутация: 18
Всего: 162



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

соглашусь.


--------------------
Пожаловаться на меня как модератора можно здесь.
PM MAIL Jabber   Вверх
Rockie
Дата 1.8.2007, 14:10 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1143
Регистрация: 23.4.2006

Репутация: 8
Всего: 31



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


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




--------------------
Чтобы иметь большой гардероб - надо иметь большой гардероб.
PM   Вверх
bsa
Дата 1.8.2007, 14:32 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Модератор
Сообщений: 9185
Регистрация: 6.4.2006
Где: Москва, Россия

Репутация: 63
Всего: 196



Имхо, есть варианты:
std::list (если много операций добавления/удаления в/из середины массива)
std::vector (если только добавление/удаление в/из конца)
malloc/realloc - почти тоже, что и std::vector, только на C
PM   Вверх
Ответ в темуСоздание новой темы Создание опроса
Правила форума "С++:Общие вопросы"
Earnest Daevaorn

Добро пожаловать!

  • Черновик стандарта C++ (за октябрь 2005) можно скачать с этого сайта. Прямая ссылка на файл черновика(4.4мб).
  • Черновик стандарта C (за сентябрь 2005) можно скачать с этого сайта. Прямая ссылка на файл черновика (3.4мб).
  • Прежде чем задать вопрос, прочтите это и/или это!
  • Здесь хранится весь мировой запас ссылок на документы, связанные с C++ :)
  • Не брезгуйте пользоваться тегами [code=cpp][/code].
  • Пожалуйста, не просите написать за вас программы в этом разделе - для этого существует "Центр Помощи".
  • C++ FAQ

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Earnest Daevaorn

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | C/C++: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.0579 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.