Представьте: вы профилируете код и видите, что std::map тормозит. Cache misses, фрагментация памяти, медленный поиск.
C++23 представляет
std::flat_map и std::flat_set — адаптеры контейнеров, которые хранят элементы в непрерывной памяти. Вместо узлов дерева — два плоских массива (ключи + значения).#include <flat_map>
std::flat_map<int, std::string> cache{
{1, "one"}, {2, "two"}, {3, "three"}
};
// Все элементы рядом в памяти — процессор доволен
auto it = cache.find(2); // Бинарный поиск по упорядоченному массиву
• Меньше cache misses → быстрее на реальных данных
• Меньше аллокаций памяти
• Лучше для read-heavy сценариев
flat_map будет более производительным чем классический map.Библиотека C/C++ разработчика
#константная_правильность
Please open Telegram to view this post
VIEW IN TELEGRAM
🥰4👍3
🎓 Экспресс-курс «Математика для Data Science» стартует 4 декабря
Этот курс для вас, если вы:
🧑💻 Программист
Когда нужно понять, что происходит «под капотом» ML-алгоритмов.
📊 Начинающий DS / аналитик / студент
Чтобы закрыть теорию, подтянуть фундамент и собрать портфолио.
📈 Смежный специалист
Чтобы уверенно работать с моделями, статистикой и гипотезами.
🎁 Сейчас лучший момент стартовать:
— скидка 40% на курс до конца ноября
— можно пройти бесплатный тест на знание основ математики
👉 Записаться на курс
Этот курс для вас, если вы:
🧑💻 Программист
Когда нужно понять, что происходит «под капотом» ML-алгоритмов.
📊 Начинающий DS / аналитик / студент
Чтобы закрыть теорию, подтянуть фундамент и собрать портфолио.
📈 Смежный специалист
Чтобы уверенно работать с моделями, статистикой и гипотезами.
🎁 Сейчас лучший момент стартовать:
— скидка 40% на курс до конца ноября
— можно пройти бесплатный тест на знание основ математики
👉 Записаться на курс
😁1🥱1
Forwarded from Библиотека программиста | программирование, кодинг, разработка
Please open Telegram to view this post
VIEW IN TELEGRAM
😁19👍3🌚1
Казалось бы, простой вопрос. Но копирование array работает совсем не так, как у vector.
Проблема: в C++ массивы не копируются обычным
=. Но std::array копируется. Как?std::array<int, 3> a = {1, 2, 3};
std::array<int, 3> b = a; // Копируются ВСЕ элементы!Под капотом компилятор генерирует:
b._data[0] = a._data[0];
b._data[1] = a._data[1];
b._data[2] = a._data[2];
array<int, 1000> будет сгенерировано 1000 операций присваивания. Или одна memcpy, если компилятор умный.Практический вывод: передавайте большие array по ссылке (
const std::array<T, N>&), иначе каждый вызов функции скопирует все N элементов.Библиотека C/C++ разработчика
#под_капотом
Please open Telegram to view this post
VIEW IN TELEGRAM
🙏4👍3
This media is not supported in your browser
VIEW IN TELEGRAM
🥱1
Чем важна математика расскажет Мария Тихонова - кандидат компьютерных наук, руководитель исследовательского направления SberAI, доцент факультета компьютерных наук и преподаватель НИУ ВШЭ на курсе «Математика для Data Science» от Proglib Academy.
Курс предусматривает выполнение практического проекта с фидбеком от экспертов. За проект можно взять темы:
• обучите градиентный спуск для предсказания цен на квартиры
• создадите классификатор тональности или тематики текста
• построите простую рекомендательную систему на матричных разложениях
Бонусы:
- скидка 40% до 30 ноября
- если оплатить до конца ноября, получите курс «Базовая математика» в подарок
➡️ Пройти бесплатный тест на знание математики
Записаться на курс
Please open Telegram to view this post
VIEW IN TELEGRAM
😁1
Ваш файл включает половину стандартной библиотеки, а использует только std::vector?
IWYU (include-what-you-use) — инструмент от Google, который анализирует какие заголовочные файлы реально используются и предлагает минимальный набор
includes. Ускоряет компиляцию и делает зависимости явными.# Ubuntu
sudo apt install iwyu
# Из исходников с нужной версией clang
git clone https://github.com/include-what-you-use/include-what-you-use.git
# Анализ файла
include-what-you-use main.cpp
# С применением исправлений
include-what-you-use main.cpp 2>&1 | fix_includes.py
# Для всего CMake проекта
cmake -DCMAKE_CXX_INCLUDE_WHAT_YOU_USE=include-what-you-use ..
• Лишние includes — файлы, которые не используются
• Транзитивные includes — зависимости через другие заголовки
• Forward declarations — где можно заменить include на forward decl
• Неполные includes — когда используется тип, но не включён его заголовок
Библиотека C/C++ разработчика
#под_капотом
Please open Telegram to view this post
VIEW IN TELEGRAM
❤3👍1