JavaRush
Акция
Университет
Java FullStack
Python FullStack
AI Native Developer
new
Web FullStack
Обучение
Курсы
Задачи
Опросы
Игры
Помощь
График пинков
Стажировка
Сообщество
Пользователи
Форум
Чат
Статьи
Истории успеха
Активности
Отзывы
Подписки
Светлая тема

Лекции

  • Отзывы
  • О нас
  • CS50
Начать
Начать обучение
Начать обучение
  • Мое обучение
  • Курсы
  • Университет
  • Карта квестов
  • Лекции
  • Инвалидация итераторов в std::vector

    C++ SELF
    24 уровень,0 лекция
    Разбираем, почему при модификациях std::vector «ломаются» привязки к элементам (итераторы, ссылки и указатели), чем опасны операции erase и push_back, как отличать настоящую инвалидацию от «уже не того элемента», и какие безопасные идиомы использовать (опора на возвращаемое значение erase, хранение id вместо T */ T &, повторный поиск через find_if).
    Открыта
  • std::remove_if и идиома erase-remove для std::vector

    C++ SELF
    24 уровень,1 лекция
    Разбираем канонический способ массового удаления элементов из std::vector: почему многократный erase в цикле приводит к пропускам и лишним сдвигам, как std::remove_if выполняет «логическое удаление» и возвращает new_end, почему хвост [new_end, end) нельзя считать данными, и как второй шаг erase(new_end, end) превращает результат в реальное удаление. Закрепляем идиому на примере мини-трекера задач.
    Открыта
  • Почему erase в цикле часто ошибочен

    C++ SELF
    24 уровень,2 лекция
    Разбираем, почему удаление элементов из std::vector «на ходу» часто ломает обход: инвалидация итераторов, пропуски элементов из-за ++, неверные границы end(), а также внезапная деградация до O(N²) при множественных вызовах erase. На примерах мини-приложения TaskBook и диаграмме показано, что именно делает vector::erase и почему важно использовать итератор, который он возвращает.
    Открыта
  • std::copy_if и std::transform

    C++ SELF
    24 уровень,3 лекция
    Разбираем «модель пересборки» данных: как безопасно получать новый результат из исходного std::vector, не трогая контейнер «на месте» (и не инвалидируя итераторы). Учимся фильтровать элементы через std::copy_if (с шаблоном out_end + erase), и преобразовывать элементы через std::transform (например, Task → std::string). В конце — типичные ошибки: куда нельзя писать через begin() и почему алгоритмы не «растят» вектор сами.
    Открыта
  • Три стратегии удаления в std::vector

    C++ SELF
    24 уровень,4 лекция
    Разбираем три практичные стратегии «удаления» элементов из std::vector в C++: точечное удаление через erase, массовую очистку через идиому erase-remove ( remove_if + erase) и подход rebuild, когда мы собираем новый результат через copy_if / transform. На мини-проекте TaskTracker обсуждаем читаемость, стоимость сдвига хвоста и типичные ошибки.
    Открыта
Обучение
  • Курсы программирования
  • Регистрация
  • Курс Java
  • Помощь по задачам
  • Цены
Сообщество
  • Пользователи
  • Статьи
  • Форум
  • Чат
  • Истории успеха
  • Активности
Компания
  • О нас
  • Контакты
  • Отзывы
  • FAQ
  • Поддержка
JavaRushJavaRush — это интерактивный онлайн-курс по изучению Java-программирования c нуля. Он содержит 1200 практических задач с проверкой решения в один клик, необходимый минимум теории по основам Java и мотивирующие фишки, которые помогут пройти курс до конца: игры, опросы, интересные проекты и статьи об эффективном обучении и карьере Java‑девелопера.
Подписывайтесь
Язык интерфейса
Русский
English Українська
"Программистами не рождаются" © 2026 JavaRush
MastercardVisa
"Программистами не рождаются" © 2026 JavaRush