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

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

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

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

24.07.2014, 10:56. Просмотров 312. Ответов 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);
В первом случае добавляем сколько угодно, удаляем сколько угодно, но при следующих добавлениях происходит зависание программы, во втором случае сразу зависание. Понимаю что где-то память не чистится, но где вот и как сделать по нормальному - хз) Объясните самоучке пожалуйста, как нужно сделать
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
24.07.2014, 10:56
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Как правильно добавлять и удалять элементы в вектор и из него (C++):

Как правильно удалять элементы листа? - C++
std::list&lt;Bullet*&gt; bullets; std::list&lt;Bullet*&gt;::iterator bullets_it; for (bullets_it = bullets.begin(); bullets_it !=...

Создать файл, в который можно добавлять, редактировать и удалять элементы структуры - C++
По заданию нужно создать файл, в который можно добавлять, редактировать и удалять элементы структуры. Пока нахожусь на стадии: как добавить...

VS 6.0 как правильно добавлять файл - C++
Здравствуйте! Вопрос как правильно подключать файл к проекту в VS 6.0 WinApi! Делал так -&gt; 1.Project -&gt; Add to Project -&gt; New ...

Как правильно удалять элемент из массива? - C++
Подскажите пожалуйста как правильно удалять элемент из динамического массива к примеру максимального? Путём смещения элементов,или просто...

Потокобезопасно ли одновременно добавлять в конец list обьекты и удалять из середины? - C++
Добрый день. Потокобезопасно ли одновременно добавлять в конец list обьекты и удалять из середины? Есть два потока. Один парсит лист и...

Как правильно копировать и добавлять вектора? - C++
Есть вектора vect1 и vect2, содержащие, допустим, значения double: using namespace std; vector&lt;double&gt; vect1, vect2;Как...

3
Voivoid
675 / 278 / 12
Регистрация: 31.03.2013
Сообщений: 1,339
24.07.2014, 11:04 #2
Ну возьми отладчик и посмотри где виснет. Или что ты под зависанием имеешь в виду?
0
Ilot
Модератор
Эксперт С++
1823 / 1181 / 232
Регистрация: 16.05.2013
Сообщений: 3,118
Записей в блоге: 5
Завершенные тесты: 1
24.07.2014, 11:05 #3
Во-первых, либо умные указатели. Во-вторых, если у вас объекты разного типа то пользуйтесь паттерном Variant либо boost::any http://insidecpp.ru/patterns/variant/
0
Fobes
16 / 16 / 2
Регистрация: 19.09.2012
Сообщений: 212
24.07.2014, 11:42  [ТС] #4
Voivoid, а че искать то ? на кнопке висит по одной функции стандартной из вектора, сразу видно, я делаю что-то не так... Под зависанием ? хм, жмем на кнопку и получаем не отвечает(как бесконечный цикл )
Ilot, а этот вариант никак не поправить ? работает то как надо, недавно заметил эти зависания программы
0
24.07.2014, 11:42
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
24.07.2014, 11:42
Привет! Вот еще темы с ответами:

Как правильно задавать массив указателей и его удалять? - C++
Т.е., например создаю указатель: TPoint *p_Point=NULL; а если массив? TPoint *p_MassPoint; //=?; как массив обнулить не ясно ...

где размещается массив и как его правильно удалять? - C++
У меня вопрос: в примере ниже создается объект класса Map в динамической памяти. В какой памяти тогда располагается массив m? и как его...

Как удалять элементы массива? - C++
как в массиве удалять элементы?

Программа, которая будет добавлять структуры заказчиков в стек и удалять из стека, представленного объявлением класса Stack - C++
Здравствуйте! Задание звучит так: Напишите программу, которая будет добавлять структуры заказчиков в стек и удалять из стека,...


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

Или воспользуйтесь поиском по форуму:
4
Ответ Создать тему
Опции темы

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