Библиотека C/C++ разработчика | cpp, boost, qt
19.7K subscribers
1.94K photos
59 videos
16 files
4.18K links
Все самое полезное для плюсовика и сишника в одном канале.

По рекламе: @proglib_adv

Учиться у нас: https://proglib.io/w/d6cd2932

Для обратной связи: @proglibrary_feeedback_bot

РКН: https://gosuslugi.ru/snet/67a5bac324c8ba6dcaa1ad17
Download Telegram
🍪 Как zip итерирует несколько ranges одновременно без накладных расходов?

Параллельная итерация по нескольким последовательностям — паттерн из Python. В C++ до C++23 это требовало индексов или связывания итераторов руками. views::zip делает это zero-cost абстракцией.


Tuple итераторов

Под капотом zip хранит tuple из итераторов каждого range. При ++it инкрементирует все одновременно:

std::vector<int> ids = {1, 2, 3};
std::vector<string> names = {"Alice", "Bob", "Charlie"};

for (auto [id, name] : views::zip(ids, names)) {
// id и name — это references, не копии
std::print("{}: {}\n", id, name);
}



💡 Structured binding магия

auto [id, name] — это structured binding поверх tuple<int&, string&>. Компилятор разворачивает это в прямой доступ к памяти, никаких промежуточных объектов:

// Что реально происходит
auto&& __pair = *it; // tuple<int&, string&>
int& id = get<0>(__pair);
string& name = get<1>(__pair);



🍬 Остановка на кратчайшем

zip заканчивается когда любой из ranges закончился. Это безопасно — не будет out-of-bounds:

vector<int> short_vec = {1, 2};
vector<int> long_vec = {10, 20, 30, 40};
auto z = views::zip(short_vec, long_vec); // Только 2 элемента


Практика: Используй вместо индексного доступа [i] когда нужно синхронно пройти несколько контейнеров. Компилятор оптимизирует до прямых указателей, часто быстрее индексов.


🔹 Курс «Алгоритмы и структуры данных»
🔹 Получить консультацию менеджера
🔹 Сайт Академии 🔹 Сайт Proglib

Библиотека C/C++ разработчика

#под_капотом
Please open Telegram to view this post
VIEW IN TELEGRAM
👍91
🎄 Скоро Новый год, а ты всё ещё не в бигтехе?

Если твой путь лежит в ML, DS или AI, то одна вещь решает всё: математика. Без неё — хоть три проекта сделай, хоть сотню туториалов посмотри — на собесе тебя всё равно вернут на «а что такое градиент?»

🔥 Экспресс-курс «Математика для Data Science» — 8 недель, чтобы закрыть базу раз и навсегда.

Что внутри:

🔘 живые вебинары, где можно задавать вопросы экспертам
🔘 записи лекций + доступ к материалам
🔘 практические задания на Python и финальный мини-проект с фидбеком
🔘 программа обновлена в ноябре 2025
🔘 2 месяца только нужного — без воды
🔘 достаточно школьной математики и базового Python

🎁 Бонусы ноября:

→ 40% скидка до 30 ноября
→ при оплате до конца месяца — курс «Базовая математика» в подарок
→ бесплатный тест, чтобы узнать свой уровень математики

👉 Хочу стартовать
😁1
😎 Где сидят крутые плюсовики

Мы знаем, что вокруг C++ огромное количество полезного контента — от классических блогов и телеграм-каналов до Stack Overflow, Reddit-сообществ и YouTube-каналов. А может вы сами создаете контент про плюсы?


💬 Делитесь в комментариях своими любимыми местами, где вы изучаете C++, следите за новостями стандарта или черпаете вдохновение. Это могут быть известные ресурсы вроде isocpp.org, малоизвестные телеграм-каналы, подкасты, конференции или личные блоги разработчиков.

Библиотека C/C++ разработчика
🤔3👾2😁1
⬆️ Доклад с С++ Russia: как выжать на 1% больше из NVIDIA RTX через переупорядочивание кода
Когда у тебя в продакшене сотни тысяч видеокарт, даже один процент производительности — это серьезные деньги.


Михаил Лукин из компании Судо рассказал, как они 70 дней бенчмаркили разные варианты инструкций.


✏️ Code reordering для compute-bound задач на примере CUDA

Часовой доклад о микроархитектурной оптимизации для RTX 30-й и 40-й серий. Узнаешь, почему целочисленные операции до сих пор в 64 раза медленнее floating-point и как обмануть компилятор NVCC.

Если работаешь с CUDA на production-нагрузках — сохрани в закладки. Где вы обычно теряете производительность на GPU?

👉 Доклад

🔹 Курс «Алгоритмы и структуры данных»
🔹 Получить консультацию менеджера
🔹 Сайт Академии () 🔹Сайт Proglib

Библиотека C/C++ разработчика

#линкер_рекомендует
Please open Telegram to view this post
VIEW IN TELEGRAM
😁3
🎵 Readability checks — код для людей

Категория readability-*, в линтере clang-tidy, следит за стилем, именованием и общей читаемостью. Как code review, но автоматический.


🍴 Пример naming conventions:

// Плохо:
class myClass { // нарушение стиля
int M_Data; // венгерская нотация
void DO_SOMETHING(); // UPPERCASE для функций
};

// Хорошо:
class MyClass { // PascalCase для классов
int m_data; // единый стиль
void doSomething(); // camelCase для методов
};



✏️ Конфигурация naming:

CheckOptions:
- key: readability-identifier-naming.ClassCase
value: CamelCase
- key: readability-identifier-naming.PrivateMemberPrefix
value: m_
- key: readability-identifier-naming.FunctionCase
value: camelBack
- key: readability-identifier-naming.ConstantCase
value: UPPER_CASE
- key: readability-identifier-naming.NamespaceCase
value: lower_case



🥳 Другие проверки:

// 1. Magic numbers
const int SIZE = 100; //
int arr[100]; // magic number

// 2. Complex условия
if (a && b || c && !d && (e || f)) { //
}

bool condition = a && b || c && !d && (e || f);
if (condition) { // Выносим в переменную
}

// 3. Длинные функции
void process() {
// 200 lines of code //
}
// readability-function-size предупредит

// 4. Implicit conversions
int x = 3.14; //
int x = static_cast<int>(3.14); //



‼️ Популярные проверки:

Checks: >
readability-identifier-naming,
readability-magic-numbers,
readability-function-size,
readability-simplify-boolean-expr,
readability-else-after-return,
readability-braces-around-statements,
readability-implicit-bool-conversion


💡 Best practice: Договорись о naming convention в команде и зафиксируй в .clang-tidy.


🐤 Какой naming convention у тебя?


🔹 Курс «Алгоритмы и структуры данных»
🔹 Получить консультацию менеджера
🔹 Сайт Академии () 🔹Сайт Proglib


Библиотека C/C++ разработчика

#константная_правильность
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥52👍1
🔥 На рынке сейчас математика — снова король: AI растёт быстрее, чем вузы успевают обновлять программы. Мы же перестраиваем курс под индустрию мгновенно.

Хочешь наконец разобраться в математике для DS, а не гуглить «что такое градиент» перед собесом?

Новый курс «Математика для разработки AI-моделей» — это 8 недель плотной подготовки, свежая программа и только актуальные темы, которые реально нужны в ML.

Что в курсе:

→ линал, производные, градиенты, вероятности, статистика;
→ практика на Python и 3 большие ДЗ;
→ живые вебинары + разбор ваших вопросов;
→ финальный мини-проект, который можно положить в портфолио;
→ доступ к материалам и чат с экспертами.

Для старта нужны только школьная математика и базовый Python.

🎁 Бонусы ноября:

— скидка 40% до 30 ноября;
— «Базовая математика» в подарок при оплате;
→ бесплатный тест уровня математики.

👉 Записывайся на курс
😁1
⚙️ Auto-fix может сломать код

Clang-Tidy умеет автоматически исправлять найденные проблемы через флаг --fix. Звучит заманчиво, но это мина замедленного действия.

Инструмент может заменить raw pointer на smart pointer, но не учтёт семантику владения в вашей кодовой базе. Или «исправит» цикл, изменив логику работы программы.

Auto-fix хорош для механических изменений: замена NULL на nullptr, добавление override, форматирование. Для сложных рефакторингов — только manual review каждого изменения.

Золотое правило: запускайте --fix на отдельной ветке, прогоняйте все тесты, делайте code review автоматических изменений.

😏 А вы доверяете автоматическим исправлениям или проверяете каждое изменение вручную?

🔹 Курс «Алгоритмы и структуры данных»
🔹 Получить консультацию менеджера
🔹 Сайт Академии🔹Сайт Proglib

Библиотека C/C++ разработчика

#междусобойчик
👍3