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

Удаление элемента из вектора ( std::vector<Bullet> ) - C++

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ двусвязной список http://www.cyberforum.ru/cpp-beginners/thread929636.html
Привет всем! помогите пожалуйста ! пришлите пожалуйста кто нибудь код реализации связного списка (чтобы был метод вставка и удаление произвольного узла) для изучения...
C++ написать прогу что же это Добавлено через 35 секунд Фух. 50 минут создавал. вот http://www.cyberforum.ru/cpp-beginners/thread929632.html
C++ Подтормаживающий рандом
Сделал простую змейку. #include <iostream> #include <Windows.h> #include <cstdlib> #include <ctime> #include <conio.h> enum napr {up = 2, left, right, down}; napr headN = right; napr hvostN = right; COORD c, apple, head, hvost;
Шаблонные классы. Присвоение к указателю и приведение типов C++
Добрый вечер, ув. форум, есть к вам вопрос. Есть род. абстрактный класс: ParentAbstact Есть два наследника: ChildOne : public ParentAbstact и ChildTwo : public ParentAbstact Есть шаблонный класс: TempClass <T> Есть глобальные экземпляры: extern TempClass<ChildOne> childOne и extern TempClass<ChildOne> childTwo Это всё из приватного фреймворка, к сожалению:cry:, дополнительную информацию я...
C++ dll http://www.cyberforum.ru/cpp-beginners/thread929606.html
1. Можно ли использовать DLL, созданную на одном языке программирования в программе на другом языке? 2. Я так понял, DLL работает только под Windows. Есть ли возможность сделать библиотеку функций, чтобы ее можно было использовать в любой ОС, но так чтобы у пользователя библиотеки не было доступа к исходному коду?
C++ Шаблоны и параметр по умолчанию Добрый день. Вроде всё делаю по учебнику, но компилятор не пропускает: #include <iostream> #include <vector> #include <cstdlib> template<class T> bool DefaultComparand(const T &, const T &); template<class T, class Function = DefaultComparand<T>> void Ssort(std::vector<T>& base, Function fn = DefaultComparand<T>() ) подробнее

Показать сообщение отдельно
gray_fox
What a waste!
1447 / 1176 / 61
Регистрация: 21.04.2012
Сообщений: 2,463
Завершенные тесты: 3
27.07.2013, 20:38     Удаление элемента из вектора ( std::vector<Bullet> )
Цитата Сообщение от NanoBreaker Посмотреть сообщение
for(auto iter = bullets.begin(); iter != bullets.end(); iter++) { if( iter -> x > 250 || iter -> x < -250 || iter -> y > 250 || iter -> y < -250 ){ bullets.erase(iter); }else{ iter -> moveBullet(); } }
C++
1
2
3
4
5
6
7
8
for (auto iter = bullets.begin(); iter != bullets.end(); ) {
   if (/* ... */) {
      iter = bullets.erase(iter);
   } else {
      iter->moveBullet();
      ++iter;
   }
}
Добавлено через 56 секунд
Просто после erase(iter) iter становиться невалидным.

Добавлено через 3 минуты
вообще как то так
C++
1
2
3
4
5
6
bullets.erase(
      std::remove_if(std::begin(bullets), std::end(bullets), [] (Bullet const& bullet) {
            return (bullet.x > 250 || bullet.x < -250 || bullet.y > 250 || bullet.y < -250);
      })
    , std::end(bullets));
std::for_each(std::begin(bullets), std::end(bullets), std::mem_fn(&Bullet::moveBullet));
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru