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

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

29.11.2021, 17:14. Показов 630. Ответов 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
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
29.11.2021, 17:14
Ответы с готовыми решениями:

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

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

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

3
7803 / 6567 / 2988
Регистрация: 14.04.2014
Сообщений: 28,705
29.11.2021, 17:20
Текст ошибки где?
0
1 / 1 / 0
Регистрация: 23.11.2020
Сообщений: 68
29.11.2021, 17:39  [ТС]
Цитата Сообщение от nmcf Посмотреть сообщение
Текст ошибки где?
Фото
Миниатюры
Удаление элемента из контейнера std::vector  
0
 Аватар для SmallEvil
3898 / 2811 / 786
Регистрация: 29.06.2020
Сообщений: 10,273
29.11.2021, 18:02
Цитата Сообщение от asdasd_mjeesh Посмотреть сообщение
tank->GetAmmoSteck().erase(tank->GetAmmoSteck().begin() + i);
i - растет, количество элементов в векторе уменьшается, как думаете, как скоро вы выйдете за пределы вектора ? )

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

Добавлено через 3 минуты
asdasd_mjeesh, воспользуйтесь алгоритмом remove_if .
1
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
29.11.2021, 18:02
Помогаю со студенческими работами здесь

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

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

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

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

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


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

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

Новые блоги и статьи
Реализация многопоточных сетевых серверов на Python
py-thonny 16.05.2025
Когда сталкиваешься с необходимостью писать высоконагруженные сетевые сервисы, выбор технологии имеет критическое значение. Python, со своей элегантностью и высоким уровнем абстракции, может. . .
C# и IoT: разработка Edge приложений с .NET и Azure IoT
UnmanagedCoder 16.05.2025
Мир меняется прямо на наших глазах, и интернет вещей (IoT) — один из главных катализаторов этих перемен. Если всего десять лет назад концепция "умных" устройств вызывала скептические улыбки, то. . .
Гибридные квантово-классические вычисления: Примеры оптимизации
EggHead 16.05.2025
Гибридные квантово-классические вычисления — это настоящий прорыв в подходах к решению сложнейших вычислительных задач. Представьте себе союз двух разных миров: классические компьютеры, с их. . .
Использование вебсокетов в приложениях Java с Netty
Javaican 16.05.2025
HTTP, краеугольный камень интернета, изначально был спроектирован для передачи гипертекста с минимальной интерактивностью. Его главный недостаток в контексте современных приложений — это. . .
Реализация операторов Kubernetes
Mr. Docker 16.05.2025
Концепция операторов Kubernetes зародилась в недрах компании CoreOS (позже купленной Red Hat), когда команда инженеров искала способ автоматизировать управление распределёнными базами данных в. . .
Отражение в C# и динамическое управление типами
stackOverflow 16.05.2025
Reflection API в . NET — это набор классов и интерфейсов в пространстве имён System. Reflection, который позволяет исследовать и манипулировать типами, методами, свойствами и другими элементами. . .
Настройка гиперпараметров с помощью Grid Search и Random Search в Python
AI_Generated 15.05.2025
В машинном обучении существует фундаментальное разделение между параметрами и гиперпараметрами моделей. Если параметры – это те величины, которые алгоритм "изучает" непосредственно из данных (веса. . .
Сериализация и десериализация данных на Python
py-thonny 15.05.2025
Сериализация — это своего рода "замораживание" объектов. Вы берёте живой, динамический объект из памяти и превращаете его в статичную строку или поток байтов. А десериализация выполняет обратный. . .
Чем асинхронная логика (схемотехника) лучше тактируемой, как я думаю, что помимо энергоэффективности - ещё и безопасность.
Hrethgir 14.05.2025
Помимо огромного плюса в энергоэффективности, асинхронная логика - тотальный контроль над каждым совершённым тактом, а значит - безусловная безопасность, где безконтрольно не совершится ни одного. . .
Многопоточные приложения на C++
bytestream 14.05.2025
C++ всегда был языком, тесно работающим с железом, и потому особеннно эффективным для многопоточного программирования. Стандарт C++11 произвёл революцию, добавив в язык нативную поддержку потоков,. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru