📰 Свеженькое из мира C++
Подготовили подборку самых интересных материалов за неделю о разных аспектах программирования и интересных проектах в мире C++.
😎 Полезное:
• Callback chain (цепочка обработчиков) — реализация
• Лямбды в STL: где они сияют — применение лямбд в STL
• std::flat_map в C++23 — адаптеры
• Что происходит при копировании std::array? — разбор того, что происходит при копировании
🔥 Интересные проекты:
• XTML: минималистичный C++‑движок для HTML‑шаблонов — утилита написанная на C++, предназначенная для обработки шаблонных файлов и генерации динамического HTML
• include-what-you-use — очистка include директив — инструмент от Google, который анализирует какие заголовочные файлы реально используются и предлагает минимальный набор
Библиотека C/C++ разработчика
#свежак
Подготовили подборку самых интересных материалов за неделю о разных аспектах программирования и интересных проектах в мире C++.
😎 Полезное:
• Callback chain (цепочка обработчиков) — реализация
Chain of Responsibility через лямбды• Лямбды в STL: где они сияют — применение лямбд в STL
• std::flat_map в C++23 — адаптеры
std::flat_map и std::flat_set• Что происходит при копировании std::array? — разбор того, что происходит при копировании
std::array🔥 Интересные проекты:
• XTML: минималистичный C++‑движок для HTML‑шаблонов — утилита написанная на C++, предназначенная для обработки шаблонных файлов и генерации динамического HTML
• include-what-you-use — очистка include директив — инструмент от Google, который анализирует какие заголовочные файлы реально используются и предлагает минимальный набор
includesБиблиотека C/C++ разработчика
#свежак
👍4❤1
🤝 Перестаньте ждать, пока вас найдут: как самому выходить на фаундеров и получать офферы
Рекрутеры тянут неделями, ATS теряет резюме, а фидбека вообще можно не дождаться. Совсем другая история — написать напрямую CTO или тимлиду: ответ приходит за день-два, а созвон назначают сразу. Учимся находить технических лидеров стартапов и продуктовых компаний и писать так, чтобы точно получить ответ.
👉 Статья
Библиотека C/C++ разработчика
#буст
Рекрутеры тянут неделями, ATS теряет резюме, а фидбека вообще можно не дождаться. Совсем другая история — написать напрямую CTO или тимлиду: ответ приходит за день-два, а созвон назначают сразу. Учимся находить технических лидеров стартапов и продуктовых компаний и писать так, чтобы точно получить ответ.
👉 Статья
Библиотека C/C++ разработчика
#буст
🔥3😁1🤔1
Forwarded from Библиотека задач по C++ | тесты, код, задания
Forwarded from Библиотека задач по C++ | тесты, код, задания
Сколько раз гарантированно прочитается x?
Anonymous Quiz
11%
0 раз (оптимизировано)
22%
1 раз
54%
2 раза
4%
Неопределённое поведение
9%
Зависит от компилятора
😁2
Forwarded from Библиотека собеса по C++ | вопросы с собеседований
Что произошло с триграфами в C++17?
Anonymous Quiz
16%
Были добавлены новые триграфы для Unicode
48%
Были полностью удалены из языка
13%
Стали обязательными для всех компиляторов
7%
Были заменены диграфами
17%
Остались без изменений
🌚2😁1
📊 А правда, что математика в Data Science не нужна?
Нет. Без неё вы не пройдёте собес и не поймёте, почему модель ведёт себя странно. Линал, матан и вероятности — это база, без которой работа в ML превращается в угадайку.
🔥 Эту базу можно собрать за 2 месяца на экспресс-курсе «Математика для Data Science».
👩🏫 Кто ведёт курс:
→ Мария Тихонова
PhD, руководитель исследовательского направления в SberAI, доцент ВШЭ.
→ Диана Миронидис
Преподаватель ВШЭ, автор научпоп-материалов по математике для блога МТС.
→ Ксения Кондаурова
Преподаватель преподаватель T-Банка, автор курсов ЦУ и Edutoria.
→ Маргарита Бурова
Академический руководитель программ по аналитике и ML, Wildberries & Russ.
🎁 Что сейчас доступно:
→ бесплатный тест, чтобы узнать свой уровень математики;
→ скидка 40% до 30 ноября;
→ если оплатить до конца ноября, курс «Базовая математика» в подарок.
👉 Пишите менеджеру, если хотите попасть в поток
Нет. Без неё вы не пройдёте собес и не поймёте, почему модель ведёт себя странно. Линал, матан и вероятности — это база, без которой работа в ML превращается в угадайку.
🔥 Эту базу можно собрать за 2 месяца на экспресс-курсе «Математика для Data Science».
👩🏫 Кто ведёт курс:
→ Мария Тихонова
PhD, руководитель исследовательского направления в SberAI, доцент ВШЭ.
→ Диана Миронидис
Преподаватель ВШЭ, автор научпоп-материалов по математике для блога МТС.
→ Ксения Кондаурова
Преподаватель преподаватель T-Банка, автор курсов ЦУ и Edutoria.
→ Маргарита Бурова
Академический руководитель программ по аналитике и ML, Wildberries & Russ.
🎁 Что сейчас доступно:
→ бесплатный тест, чтобы узнать свой уровень математики;
→ скидка 40% до 30 ноября;
→ если оплатить до конца ноября, курс «Базовая математика» в подарок.
👉 Пишите менеджеру, если хотите попасть в поток
❤1😁1
Сколько раз ты забывал добавить определение static члена в .cpp, и компилятор радостно выдавал undefined reference?
С
C++17 можно просто добавить inline к static переменной класса, и всё работает. Особенно круто это для счётчиков, кешей и паттерна Registry.// До C++17
class Logger {
public:
static std::ofstream log_file; // объявление
static int message_count; // объявление
};
// В .cpp обязательно нужны определения:
// std::ofstream Logger::log_file{"app.log"};
// int Logger::message_count = 0;
// С C++17
class Logger {
public:
inline static std::ofstream log_file{"app.log"};
inline static int message_count = 0;
inline static std::mutex log_mutex;
static void log(const std::string& msg) {
std::lock_guard lock(log_mutex);
log_file << "[" << message_count++ << "] " << msg << '\n';
}
};
// Никаких дополнительных файлов!
Библиотека C/C++ разработчика
#шаблонный_код
Please open Telegram to view this post
VIEW IN TELEGRAM
👍18❤1
В legacy коде до сих пор встречаются макросы вместо inline функций. И это проблема.
Макросы — это текстовая подстановка препроцессором до компиляции.
Классический пример:
cpp #define SQUARE(x) x*x
Выглядит невинно, но вызов
SQUARE(a+b) развернется в a+b*a+b вместо (a+b)*(a+b). Проблемы с приоритетом операций, отсутствие type safety, невозможность отладки — список можно продолжать.Inline функции решают все эти проблемы. Они проверяются компилятором на типы, поддерживают перегрузку, могут использовать пространства имен и классы. Отладчик понимает их как обычные функции. А современные компиляторы оптимизируют их так же эффективно, как макросы, но безопаснее.
Единственное преимущество макросов — работа с любыми типами без шаблонов. Но с появлением
constexpr и шаблонов в C++11/14/17 даже это преимущество исчезло.Вы всё ещё пишете макросы для "быстрых" функций или давно перешли на inline/constexpr?
Библиотека C/C++ разработчика
#междусобойчик
Please open Telegram to view this post
VIEW IN TELEGRAM
👍6🤔4
Structured bindings выглядят просто, но есть подводные камни, которые ловят даже опытные разработчики.struct Heavy {
std::vector<int> data{1'000'000};
};
std::pair<int, Heavy> getPair();
// ❌ Копирование элементов!
auto [id, heavy] = getPair();
// ✅ Работа через ссылку
auto& [id, heavy] = getPair();std::tuple<int, int, int> getCoords();
// ❌ Ошибка компиляции
auto [x, y] = getCoords(); // Нужно ровно 3 переменные!
// ✅ Правильно
auto [x, y, z] = getCoords();
// ❌ ОПАСНО!
const auto& [x, y] = std::make_pair(1, 2);
// Временный объект уничтожен, x и y невалидны
// ✅ БЕЗОПАСНО
auto [x, y] = std::make_pair(1, 2);
const auto [x, y] = getPair();
x = 10; // ❌ Ошибка: x — константа!
// Нужно:
auto [x, y] = getPair(); // Без const
std::map<int, std::string> m{{1, "one"}};
// key имеет тип const int&, не int&!
for (auto& [key, value] : m) {
key = 2; // ❌ Ошибка компиляции!
}🔹 Курс «Алгоритмы и структуры данных»
🔹 Получить консультацию менеджера
🔹 Сайт Академии 🔹 Сайт Proglib
Библиотека C/C++ разработчика
#константная_правильность
Please open Telegram to view this post
VIEW IN TELEGRAM
❤6👍2😁2🥱1
🗄 Как защитить себя от увольнения: карьерная «страховка» для IT‑шника
Рассказываем о способах, которые помогут подстраховать себя на работе в период кризиса в IT-индустрии. Объясняем, как заключить трудовой договор (и что точно должно быть в нем прописано) и соглашения о расторжении.
👉 Статья
🔹 Курс «Алгоритмы и структуры данных»
🔹 Получить консультацию менеджера
🔹 Сайт Академии 🔹 Сайт Proglib
Библиотека C/C++ разработчика
Рассказываем о способах, которые помогут подстраховать себя на работе в период кризиса в IT-индустрии. Объясняем, как заключить трудовой договор (и что точно должно быть в нем прописано) и соглашения о расторжении.
👉 Статья
🔹 Курс «Алгоритмы и структуры данных»
🔹 Получить консультацию менеджера
🔹 Сайт Академии 🔹 Сайт Proglib
Библиотека C/C++ разработчика
😁3