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

Лекции

  • Отзывы
  • О нас
  • CS50
Начать
Начать обучение
Начать обучение
  • Мое обучение
  • Курсы
  • Университет
  • Карта квестов
  • Лекции
  • static_assert в шаблонах

    C++ SELF
    58 уровень,0 лекция
    Разбираем, как использовать static_assert в шаблонах C++ так, чтобы вместо «простыни» ошибок получать одну понятную причину: где именно нарушен контракт и что ожидалось от типа. Обсудим, когда проверка срабатывает (при инстанцировании), почему опасен static_assert( false, ...), как применять трюк always_false_v<T>, где лучше размещать проверки, и как сочетать concept/ requires с дружелюбной диагностикой.
    Открыта
  • SFINAE vs concepts: почему concepts предпочтительнее

    C++ SELF
    58 уровень,1 лекция
    Разбираем, как C++ «отфильтровывает» неподходящие шаблоны: через SFINAE (когда перегрузка исчезает при ошибке подстановки) и через concepts/ requires (когда контракт виден прямо в сигнатуре). Сравним читаемость, качество ошибок компиляции и перегрузки, а затем соберём практический пример edu::pretty_print для чисел, строк и диапазонов ( std::ranges::range) в стиле C++20/23.
    Открыта
  • Категории итераторов: input / forward / bidirectional / random-access

    C++ SELF
    58 уровень,2 лекция
    Разбираем «лестницу возможностей» итераторов в STL: чем отличаются input, forward, bidirectional и random-access, какие операции гарантированы ( ++, --, +, [], разность итераторов), почему диапазоны почти всегда задаются как [ first , last ), и как выбирать универсальные инструменты вроде std::advance вместо неверных предположений о контейнере ( vector vs map).
    Открыта
  • iterator vs const_iterator — безопасный доступ

    C++ SELF
    58 уровень,3 лекция
    Разбираем, зачем в C++ нужны const_iterator и методы cbegin()/ cend(), как они фиксируют «намерение только читать» и превращают случайные модификации в ошибки компиляции. Сравним поведение begin()/ end() и cbegin()/ cend(), посмотрим на взаимодействие с алгоритмами ( std::find_if) и на выбор режима доступа в range-for через auto, auto& и const auto&.
    Открыта
  • Inserter‑ы: back_inserter / inserter и зачем они

    C++ SELF
    58 уровень,4 лекция
    Разбираем, как STL‑алгоритмы пишут результат через «выходной итератор» и почему попытка писать в dst . begin() для пустого контейнера приводит к проблемам. Учимся подключать контейнеры к алгоритмам через std :: back_inserter (вставка в конец через push_back()) и std :: inserter (вставка через insert() для set/ map), а также фиксируем разницу между reserve() и resize() и разбираем типичные ошибки.
    Открыта
Обучение
  • Курсы программирования
  • Регистрация
  • Курс Java
  • Помощь по задачам
  • Цены
Сообщество
  • Пользователи
  • Статьи
  • Форум
  • Чат
  • Истории успеха
  • Активности
Компания
  • О нас
  • Контакты
  • Отзывы
  • FAQ
  • Поддержка
JavaRushJavaRush — это интерактивный онлайн-курс по изучению Java-программирования c нуля. Он содержит 1200 практических задач с проверкой решения в один клик, необходимый минимум теории по основам Java и мотивирующие фишки, которые помогут пройти курс до конца: игры, опросы, интересные проекты и статьи об эффективном обучении и карьере Java‑девелопера.
Подписывайтесь
Язык интерфейса
Русский
English Українська
"Программистами не рождаются" © 2026 JavaRush
MastercardVisa
"Программистами не рождаются" © 2026 JavaRush