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

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

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

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

РКН: https://gosuslugi.ru/snet/67a5bac324c8ba6dcaa1ad17
Download Telegram
🐸 Подборка вакансий для C++-разработчиков за неделю

Разработчик C++ — от 230 000 и до 250 000 ₽ Удалёнка

Middle C++ Developer (Core) — от 200 000 ₽ Удалёнка

Lead C++ Software Engineer (Gameplay) — Удалёнка

С++ Tools Developer — Гибрид (Москва)

Team Lead C++ — до 400 000 ₽ Удалёнка, гибрид (Москва)

Разработчик С++/ QML — Офис (Москва)


Библиотека C/C++ разработчика
👍2
🍒 std::generator — ленивые последовательности в стандарте

Писал итераторы с кучей boilerplate для ленивого чтения? Или тащил ranges::views для простых генераторов?


C++23 добавляет std::generator — coroutine-based ленивые последовательности. Пишешь как обычную функцию, получаешь итератор. Идеально для парсеров, ленивого чтения файлов, бесконечных последовательностей.

#include <generator>
#include <print>
#include <fstream>
#include <string>
#include <optional>

// Простой генератор чисел Фибоначчи
std::generator<uint64_t> fibonacci(size_t count) {
uint64_t a = 0, b = 1;

for (size_t i = 0; i < count; ++i) {
co_yield a;
auto next = a + b;
a = b;
b = next;
}
}

// Ленивое чтение строк из файла
std::generator<std::string> read_lines(const std::string& filename) {
std::ifstream file(filename);
std::string line;

while (std::getline(file, line)) {
co_yield line;
}
}

// Генератор простых чисел (бесконечный)
std::generator<uint64_t> primes() {
co_yield 2;

std::vector<uint64_t> found_primes;
uint64_t candidate = 3;

while (true) {
bool is_prime = true;
for (auto p : found_primes) {
if (p * p > candidate) break;
if (candidate % p == 0) {
is_prime = false;
break;
}
}

if (is_prime) {
found_primes.push_back(candidate);
co_yield candidate;
}

candidate += 2;
}
}

// Генератор с трансформацией
std::generator<int> squares(int n) {
for (int i = 0; i < n; ++i) {
co_yield i * i;
}
}

void demo() {
// Первые 10 чисел Фибоначчи
std::print("Fibonacci: ");
for (auto num : fibonacci(10)) {
std::print("{} ", num);
}
std::println("");

// Первые 20 простых
std::print("Primes: ");
size_t count = 0;
for (auto prime : primes()) {
std::print("{} ", prime);
if (++count >= 20) break;
}
std::println("");

// Квадраты
std::print("Squares: ");
for (auto sq : squares(5)) {
std::print("{} ", sq);
}
std::println("");
}


❗️ Используй generator вместо ручного написания итераторов для ленивых последовательностей. Память выделяется только под state coroutine. Можно делать бесконечные последовательности без риска.

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

#под_капотом
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥7👍1
🎉 Большая распродажа Proglib Academy — минус 40% на всё!

📚 Выбирай свой курс:

▫️ «Экспресс-курс по математике для DS» — получи фундамент для построения успешной карьеры в Data Science
▫️ «Математика для DS» — для тех, кто хочет уверенно работать с данными;
▫️ «Основы Python» — чтобы начать писать код с нуля;
▫️ «Алгоритмы и структуры данных» — для будущих инженеров;
▫️ «Специалист по ИИ» или «AI-агенты», или «Машинное обучение» — для тех, кто хочет прокачаться в ИИ.
▫️ «Архитектуры и шаблоны проектирования» — чтобы писать гибкий, масштабируемый код как мидл+ разработчик.
▫️ «Основы IT для непрограммистов» — для тех, кто хочет понимать, как устроены технологии, не будучи разработчиком.

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

▫️ Розыгрыш MacBook Pro 14 — купи любой курс и пройди 2 недели обучения до 30 ноября.

▫️ Бесплатный тест по математике — за 5 минут покажет, какие темы стоит подтянуть перед DS.

👉 Выбрать курс со скидкой
😁1
📰 Свеженькое из мира 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++ разработчика

#свежак
1👍1