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

Лекции

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

    C++ SELF
    60 уровень,0 лекция
    Разбираем, почему одинаковая асимптотика ( O(N)) ещё не гарантирует одинаковую скорость: как CPU-кэш и линии кэша «любят» подряд лежащие элементы, почему std::vector с непрерывной памятью часто выигрывает у std::list (узлы и прыжки по памяти), где находится компромисс std::deque, и как почувствовать локальность на практике (печать адресов, линейные проходы, аккуратный стиль итерации). В конце — типичные ошибки оптимизации: слепая вера в O(1), выводы по одному эксперименту и игнорирование правил инвалидирования ссылок у vector.
    Открыта
  • Контракт компаратора для std::map / std::set

    C++ SELF
    60 уровень,1 лекция
    Разбираем, почему компаратор в std::set и std::map — это часть корректности контейнера, а не «опция сортировки»: как определяется эквивалентность ключей через comp, что такое strict weak ordering, почему нельзя писать <= вместо <, зачем нужен tie-breaker, и почему компаратор должен быть «чистым» (без внешнего изменяемого состояния и побочных эффектов).
    Открыта
  • unordered_*: hash, равенство, load factor, rehash

    C++ SELF
    60 уровень,2 лекция
    Разбираем, как устроены хеш-контейнеры C++: путь поиска key → hash → bucket → проверка равенства через ==, что такое bucket_count() и load_factor(), почему плотность влияет на скорость и как рост вызывает rehash с инвалидированием итераторов. Показываем инженерные приёмы: reserve(), max_load_factor(), мини-диагностика и практический индекс по id на базе std::unordered_map.
    Открыта
  • Пользовательский ключ

    C++ SELF
    60 уровень,3 лекция
    Разбираем, как проектировать «ключ идентичности» для ассоциативных контейнеров: чем отличается контракт уникальности в std::map/ std::set (через компаратор) и в std::unordered_map/ std::unordered_set (через связку hash + ==), почему составные ключи требуют tie-breaker, как нормализация строк влияет на корректность и производительность, и какие ошибки чаще всего ломают поиск и вставку.
    Открыта
  • Выбор структуры данных: std::vector или std::map

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