1 / 1 / 0
Регистрация: 23.11.2020
Сообщений: 68
1

Удаление элемента из контейнера std::vector

29.11.2021, 17:14. Показов 563. Ответов 3
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Добрый вечер.

Есть некоторый класс Tank, имеющий коллекцию типа sdt::vector среди своих атрибутов. При передаче этого атрибута в другой класс для дальнейшей обработки(удаления элементов) с последующей компиляцией программы происходит ошибка, в которой сказано, что произошел выход из диапазона контейнера.

Подскажите, пожалуйста, что я делаю не так?

Геттер для вектора(класс Tank)
C++
1
2
3
4
std::vector<Ammo*>& Tank::GetAmmoSteck()
{
    return _ammoSteck;
}
Удаление(в другом классе)
C++
1
2
3
4
5
6
7
8
9
10
void Controller::deleteUsedAmmo(Tank* tank)
{
    for (int i = 0; i < tank->GetAmmoSteck().size(); i++)
    {
        if (!tank->GetAmmoSteck()[i]->GetHealth())
        {
            tank->GetAmmoSteck().erase(tank->GetAmmoSteck().begin() + i);
        }
    }
}
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
29.11.2021, 17:14
Ответы с готовыми решениями:

Удаление элемента из std::vector<>
- Здравствуйте завсегдатаи! Подскажите пожалуйста, можно ли из STL-ского вектора std::vector&lt;int&gt;...

Удаление элемента из вектора ( std::vector<Bullet> )
Здравствуйте! У меня возникла проблема во время удаления элементов, значения которых не...

Reallocation памяти контейнера std::vector
расширение памяти в этом контейнере происходит по логарифмическому закону. Объясните , пожалуйста,...

Реализация контейнера идентичного std::vector по Страуструпу
При попытке скомпилировать код появляются ошибки, хотя делаю вроде как пишет Бьярне. Компилятор VSE...

На основе исходного std::vector<std::string> содержащего числа, создать std::vector<int> с этими же числами
подскажите есть вот такая задача. Есть список . Создать второй список, в котором будут все эти же...

3
7785 / 6553 / 2983
Регистрация: 14.04.2014
Сообщений: 28,624
29.11.2021, 17:20 2
Текст ошибки где?
0
1 / 1 / 0
Регистрация: 23.11.2020
Сообщений: 68
29.11.2021, 17:39  [ТС] 3
Цитата Сообщение от nmcf Посмотреть сообщение
Текст ошибки где?
Фото
Миниатюры
Удаление элемента из контейнера std::vector  
0
2818 / 2326 / 703
Регистрация: 29.06.2020
Сообщений: 8,580
29.11.2021, 18:02 4
Цитата Сообщение от asdasd_mjeesh Посмотреть сообщение
tank->GetAmmoSteck().erase(tank->GetAmmoSteck().begin() + i);
i - растет, количество элементов в векторе уменьшается, как думаете, как скоро вы выйдете за пределы вектора ? )

Добавлено через 34 секунды
О чем красноречиво выдает фото ошибки.

Добавлено через 3 минуты
asdasd_mjeesh, воспользуйтесь алгоритмом remove_if .
1
29.11.2021, 18:02
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
29.11.2021, 18:02
Помогаю со студенческими работами здесь

Как передать целочисленную матрицу типа std::vector<std::vector<int> > в функцию?
Здравствуйте. Почитал на форуме, но так и не понял что я делаю не так. Имеется двумерный вектор....

Удаление элементов из std::vector
У меня есть класс Zone. Но объявлен как массив vector в другом классе. class World { public:...

Абстрактный класс, удаление наследника из std::vector<T>
При удалении через итератор выбивает ошибку в ходе выполнения программы. Имеется абстрактный...

Обращение к полю элемента std::vector'a
Здравстуйте! :) Несильно знаком с STL пока, возникла проблемка. Есть класс: class DataBase {...

Вывести значения std::vector<std::vector<int*> >
Подскажите, как вывести значения? const size_t row = 3; const size_t col = 3;...

Как изменять размер std::vector<std::vector>?
Здравствуйте, как нужно изменять размер std::vector&lt;std::vector&gt; например: ...


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

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

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru