Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > C/C++ программирование > Общие вопросы C/C++
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 07.03.2012, 17:45   #1
LiuLiuJons
Форумчанин
 
Регистрация: 28.12.2011
Сообщений: 124
По умолчанию Удаление элемента массива

Есть массив объектов:

Код:
Field* arr = new Field[amount];
Заполнение данными этих объектов происходит следующим образом:
Код:
	Field* t1;
	for (int i = 0; i < c; i++)
	{
		for (int j = 0; j < r; j++) { 
			t1 = new Field();
			t1->SetPos(i * mashtab, -j * mashtab);
			t1->SetSize(mashtab);
			t1->setColorR();
			arr[r * i + j] = *t1;
			delete t1;
		}
	}
Это всё код при инициализации.
Далее в последующей процедуре надо удалить конкретный элемент массива. Как это сделать?
Так:
Код:
delete (arr+i);// удаление i-того элемента массива
?

Но тут я видимо что-то неправильно делаю.
Подскажите как правильно?
И второй вопрос - когда я удаляю, что же остаётся на месте удалённого элемента - NULL указатель ?

Заранее спасибо!
"Думай не о задаче, а о решении" (с)
LiuLiuJons вне форума Ответить с цитированием
Старый 07.03.2012, 21:35   #2
Granus
С++
Форумчанин
 
Аватар для Granus
 
Регистрация: 22.09.2008
Сообщений: 791
По умолчанию

Кхм, массив - не самая подходящая структура для удаления произвольных элементов. Либо почитайте про списки, либо при удалении неплохо бы сдвигать оставшиеся элементы дабы заполнить пустое место, оставшееся после удаления.
Форматируйте код, будьте людьми.
Granus вне форума Ответить с цитированием
Старый 07.03.2012, 21:36   #3
Ezhuk
Форумчанин
 
Регистрация: 09.10.2010
Сообщений: 217
По умолчанию

Надо создать новый массив меньше на 1.
Потом записать туда все элементы кроме i.
Освободить память из под старого.
Присвоить к указателю arr адрес нового массива.
Ёж птица гордая, пока не пнешь не полетит.
Ezhuk вне форума Ответить с цитированием
Старый 07.03.2012, 22:04   #4
Smitt&Wesson
Старожил
 
Аватар для Smitt&Wesson
 
Регистрация: 31.05.2010
Сообщений: 13,543
По умолчанию

Цитата:
Сообщение от LiuLiuJons Посмотреть сообщение
Но тут я видимо что-то неправильно делаю.
Подскажите как правильно?
!
Не правильно. Вы, не понимаете тип указателей. Динамический массив, это последовательность элементов в памяти. Можно применить итераторы, но лучше (проще(тут будут споры (но кому как нравится))) переписать созданный, во-вновь созданный.
Пиши пьяным, редактируй трезвым.
Справочник по алгоритмам С++ Builder
Smitt&Wesson вне форума Ответить с цитированием
Старый 07.03.2012, 22:42   #5
LiuLiuJons
Форумчанин
 
Регистрация: 28.12.2011
Сообщений: 124
По умолчанию

Хорошо, спасибо. Я поняла, раз нельзя, значит нельзя.
Но можно ведь и не удалять, а сделать элемент, например, "невидимым" для других элементов по средствам функций, не нарушая последовательности.
"Думай не о задаче, а о решении" (с)
LiuLiuJons вне форума Ответить с цитированием
Старый 07.03.2012, 22:47   #6
Granus
С++
Форумчанин
 
Аватар для Granus
 
Регистрация: 22.09.2008
Сообщений: 791
По умолчанию

Ну, Вы можете использовать какое-нибудь значение (0, например) для идентификации "пустых" ячеек массива. Или вообще завести массив булеанов для той же цели, если так уж хотите массивы
Форматируйте код, будьте людьми.
Granus вне форума Ответить с цитированием
Старый 07.03.2012, 23:38   #7
Smitt&Wesson
Старожил
 
Аватар для Smitt&Wesson
 
Регистрация: 31.05.2010
Сообщений: 13,543
По умолчанию

Цитата:
Сообщение от Granus Посмотреть сообщение
Ну, Вы можете использовать какое-нибудь значение (0, например) для идентификации "пустых" ячеек массива. Или вообще завести массив булеанов для той же цели, если так уж хотите массивы
В этом случае, лучше применить структуру (гемора по-меньше будет).
Пиши пьяным, редактируй трезвым.
Справочник по алгоритмам С++ Builder
Smitt&Wesson вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
удаление элемента из массива Dmitry73 Помощь студентам 3 02.12.2010 09:10
удаление элемента массива Studentka_iz_ZP Общие вопросы C/C++ 2 02.10.2010 13:55
Удаление элемента из массива prostac Помощь студентам 2 30.09.2010 11:14
Удаление элемента из массива asd874 Помощь студентам 3 13.05.2010 12:13
Удаление элемента массива chiffa Общие вопросы Delphi 1 03.01.2008 19:24