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

Лекции

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

    C++ SELF
    61 уровень,0 лекция
    Разбираем, как ускорять поиск данных с помощью индексов и при этом не сломать согласованность: почему нужен один «источник правды», что такое инварианты, как строить схему id → позиция и вторичные индексы ( email, tag), чем опасны указатели/итераторы на элементы std::vector, как правильно делать удаление через swap-erase, когда выгодно rebuild индекса, и почему assert помогает ловить рассинхронизацию раньше, чем её увидит пользователь.
    Открыта
  • std::sort и std::stable_sort

    C++ SELF
    61 уровень,1 лекция
    Разбираем сортировку в C++ как операцию над диапазоном и сравниваем std::sort и std::stable_sort: что означает стабильность, почему «равные» элементы могут «прыгать», как задаётся порядок через компаратор comp (функция bool), и как применять стабильную сортировку в практических сценариях — UX-списки задач и многошаговая сортировка по нескольким ключам.
    Открыта
  • Компаратор и strict weak ordering

    C++ SELF
    61 уровень,2 лекция
    Разбираем компаратор как контракт порядка: как читать comp(a, b), почему нельзя писать <=/ >=, что такое strict weak ordering (в терминах C++ — concept strict_weak_order), как устроена эквивалентность ! comp(a, b) && ! comp(b, a), зачем нужен tie-breaker, и почему один и тот же компаратор должен переиспользоваться в std::sort и std::lower_bound/ std::binary_search.
    Открыта
  • std::binary_search, std::lower_bound, std::upper_bound

    C++ SELF
    61 уровень,3 лекция
    Разбираем семейство алгоритмов бинарного поиска в C++: как быстро проверять наличие ключа через std::binary_search, как получать позицию вставки и «кандидата на совпадение» через std::lower_bound, и как находить правую границу дубликатов через std::upper_bound. Отдельно фиксируем главное предусловие: диапазон обязан быть отсортирован тем же порядком (тот же operator< или тот же компаратор), иначе результат не гарантируется. Закрепляем всё на примере поиска по struct Task и поддержания отсортированности в мини-приложении TaskBox.
    Открыта
  • Агрегации диапазона: accumulate и поиск min/max в STL

    C++ SELF
    61 уровень,4 лекция
    Разбираем «агрегации диапазона» в C++ (STL): как безопасно сворачивать контейнер в одно значение через std::accumulate (и почему тип результата задаётся параметром init), как находить экстремумы через std::min_element/ std::max_element и за один проход получать обе границы с std::minmax_element. Все примеры привязаны к мини‑приложению TaskBoard на std::vector и сопровождаются разбором типичных ошибок.
    Открыта
Обучение
  • Курсы программирования
  • Регистрация
  • Курс Java
  • Помощь по задачам
  • Цены
Сообщество
  • Пользователи
  • Статьи
  • Форум
  • Чат
  • Истории успеха
  • Активности
Компания
  • О нас
  • Контакты
  • Отзывы
  • FAQ
  • Поддержка
JavaRushJavaRush — это интерактивный онлайн-курс по изучению Java-программирования c нуля. Он содержит 1200 практических задач с проверкой решения в один клик, необходимый минимум теории по основам Java и мотивирующие фишки, которые помогут пройти курс до конца: игры, опросы, интересные проекты и статьи об эффективном обучении и карьере Java‑девелопера.
Подписывайтесь
Язык интерфейса
Русский
English Українська
"Программистами не рождаются" © 2026 JavaRush
MastercardVisa
"Программистами не рождаются" © 2026 JavaRush