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

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

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

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

РКН: https://gosuslugi.ru/snet/67a5bac324c8ba6dcaa1ad17
Download Telegram
🍴 Типичные ошибки со structured bindings

Structured bindings выглядят просто, но есть подводные камни, которые ловят даже опытные разработчики.


1️⃣ Забыли & и получили копию

struct Heavy {
std::vector<int> data{1'000'000};
};

std::pair<int, Heavy> getPair();

// Копирование элементов!
auto [id, heavy] = getPair();

// Работа через ссылку
auto& [id, heavy] = getPair();



2️⃣ Неправильное количество переменных

std::tuple<int, int, int> getCoords();

// Ошибка компиляции
auto [x, y] = getCoords(); // Нужно ровно 3 переменные!

// Правильно
auto [x, y, z] = getCoords();


3️⃣ Dangling references

//  ОПАСНО!
const auto& [x, y] = std::make_pair(1, 2);
// Временный объект уничтожен, x и y невалидны

// БЕЗОПАСНО
auto [x, y] = std::make_pair(1, 2);


4️⃣ Попытка модифицировать const

const auto [x, y] = getPair();
x = 10; // Ошибка: x — константа!

// Нужно:
auto [x, y] = getPair(); // Без const


5️⃣ Неправильные ожидания от типов

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
7👍4😁2👏1🥱1
🗄 Как защитить себя от увольнения: карьерная «страховка» для IT‑шника

Рассказываем о способах, которые помогут подстраховать себя на работе в период кризиса в IT-индустрии. Объясняем, как заключить трудовой договор (и что точно должно быть в нем прописано) и соглашения о расторжении.

👉 Статья

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

Библиотека C/C++ разработчика
😁41
🍪 Как 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
👍7
🎄 Скоро Новый год, а ты всё ещё не в бигтехе?

Если твой путь лежит в 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