Форум программистов, компьютерный форум CyberForum.ru

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
Fobes
16 / 16 / 2
Регистрация: 19.09.2012
Сообщений: 212
#1

Как правильно добавлять и удалять элементы в вектор и из него - C++

24.07.2014, 10:56. Просмотров 289. Ответов 3
Метки нет (Все метки)

Всем доброго времени суток. Прошу объяснить как правильно добавлять и удалять элементы в вектор и из него... Использую его для хранения объектов разных классов(понимаю что cut, но так удобнее).
Инициализация:
C++
1
std::vector<void*> ArrayElements;
По нажатию на кнопку добавляю:
C++
1
ArrayElements.push_back( (void*)(new SystemRZA(tmp)));
С другой кнопки удаляю:
C++
1
ArrayElements.erase(ArrayElements.begin() + Form2->ListBox1->ItemIndex);
Пробовал еще так:
C++
1
2
ArrayElements.erase(ArrayElements.begin() + Form2->ListBox1->ItemIndex);
                            std::vector<void*>(ArrayElements).swap(ArrayElements);
В первом случае добавляем сколько угодно, удаляем сколько угодно, но при следующих добавлениях происходит зависание программы, во втором случае сразу зависание. Понимаю что где-то память не чистится, но где вот и как сделать по нормальному - хз) Объясните самоучке пожалуйста, как нужно сделать
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
24.07.2014, 10:56     Как правильно добавлять и удалять элементы в вектор и из него
Посмотрите здесь:

C++ где размещается массив и как его правильно удалять?
Как правильно объявить вектор? C++
C++ Программа, которая будет добавлять структуры заказчиков в стек и удалять из стека, представленного объявлением класса Stack
C++ VS 6.0 как правильно добавлять файл
Создать файл, в который можно добавлять, редактировать и удалять элементы структуры C++
C++ Как удалять из массива элементы, первая цифра которых четная
Как правильно удалять элемент из массива? C++
C++ Как удалять элементы массива?
Потокобезопасно ли одновременно добавлять в конец list обьекты и удалять из середины? C++
C++ Как правильно удалять элементы листа?
C++ Реализовать функции, позволяющие добавлять/удалять блок элементов в массива/из массива
C++ Как правильно копировать и добавлять вектора?

Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Voivoid
672 / 275 / 12
Регистрация: 31.03.2013
Сообщений: 1,338
24.07.2014, 11:04     Как правильно добавлять и удалять элементы в вектор и из него #2
Ну возьми отладчик и посмотри где виснет. Или что ты под зависанием имеешь в виду?
Ilot
Модератор
Эксперт С++
1784 / 1159 / 224
Регистрация: 16.05.2013
Сообщений: 3,048
Записей в блоге: 5
Завершенные тесты: 1
24.07.2014, 11:05     Как правильно добавлять и удалять элементы в вектор и из него #3
Во-первых, либо умные указатели. Во-вторых, если у вас объекты разного типа то пользуйтесь паттерном Variant либо boost::any http://insidecpp.ru/patterns/variant/
Fobes
16 / 16 / 2
Регистрация: 19.09.2012
Сообщений: 212
24.07.2014, 11:42  [ТС]     Как правильно добавлять и удалять элементы в вектор и из него #4
Voivoid, а че искать то ? на кнопке висит по одной функции стандартной из вектора, сразу видно, я делаю что-то не так... Под зависанием ? хм, жмем на кнопку и получаем не отвечает(как бесконечный цикл )
Ilot, а этот вариант никак не поправить ? работает то как надо, недавно заметил эти зависания программы
Yandex
Объявления
24.07.2014, 11:42     Как правильно добавлять и удалять элементы в вектор и из него
Ответ Создать тему
Опции темы

Текущее время: 22:00. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru