🧠 C++ Задача для продвинутых: безопасный счётчик с автоматическим сбросом
Условие:
Реализуйте потокобезопасный счётчик, который:
1. Увеличивается при вызове
2. Возвращает текущее значение при
3. Автоматически сбрасывается в 0 через
4. Не сбрасывается, если за это время пришёл новый
🔧 Условия:
- Нельзя использовать сторонние библиотеки (только стандарт C++17+)
- Нельзя вручную управлять потоками (используйте
- Нужно обеспечить корректный RAII (автоматическое завершение потоков при разрушении объекта)
🔍 Пример:
💡 Подсказка:
Нужно реализовать "отложенный сброс", который перезапускается при каждом increment(). Используйте фоновый поток и condition_variable.
✅ Ожидаемое решение (упрощённый скелет):
🎯 Отличная задача, чтобы потренировать:
понимание RAII
работу с condition_variable
атомарные переменные
и правильную остановку фоновых потоков
Можешь доработать под конкретные кейсы — например, логирование событий сброса или работу с несколькими счётчиками.
Условие:
Реализуйте потокобезопасный счётчик, который:
1. Увеличивается при вызове
increment()
2. Возвращает текущее значение при
get()
3. Автоматически сбрасывается в 0 через
N
миллисекунд после последнего increment()4. Не сбрасывается, если за это время пришёл новый
increment()
🔧 Условия:
- Нельзя использовать сторонние библиотеки (только стандарт C++17+)
- Нельзя вручную управлять потоками (используйте
std::thread
, std::mutex
, `std::condition_variable`)- Нужно обеспечить корректный RAII (автоматическое завершение потоков при разрушении объекта)
🔍 Пример:
SafeCounter counter(1000); // сброс через 1000 мс
counter.increment(); // value = 1
std::this_thread::sleep_for(500ms);
counter.increment(); // value = 2, таймер сброса перезапускается
std::this_thread::sleep_for(1500ms);
std::cout << counter.get(); // value = 0
💡 Подсказка:
Нужно реализовать "отложенный сброс", который перезапускается при каждом increment(). Используйте фоновый поток и condition_variable.
✅ Ожидаемое решение (упрощённый скелет):
#include <iostream>
#include <thread>
#include <atomic>
#include <mutex>
#include <condition_variable>
#include <chrono>
class SafeCounter {
public:
SafeCounter(int timeout_ms) : timeout(timeout_ms), value(0), stop(false) {
worker = std::thread([this] { this->watch(); });
}
~SafeCounter() {
{
std::lock_guard<std::mutex> lock(mtx);
stop = true;
}
cv.notify_all();
worker.join();
}
void increment() {
{
std::lock_guard<std::mutex> lock(mtx);
++value;
last_action = std::chrono::steady_clock::now();
}
cv.notify_all();
}
int get() const {
return value.load();
}
private:
void watch() {
std::unique_lock<std::mutex> lock(mtx);
while (!stop) {
cv.wait_for(lock, timeout, [this] {
return stop || std::chrono::steady_clock::now() - last_action >= timeout;
});
if (stop) break;
if (std::chrono::steady_clock::now() - last_action >= timeout) {
value = 0;
}
}
}
std::chrono::milliseconds timeout;
std::chrono::steady_clock::time_point last_action = std::chrono::steady_clock::now();
std::atomic<int> value;
std::mutex mtx;
std::condition_variable cv;
std::thread worker;
bool stop;
};
🎯 Отличная задача, чтобы потренировать:
понимание RAII
работу с condition_variable
атомарные переменные
и правильную остановку фоновых потоков
Можешь доработать под конкретные кейсы — например, логирование событий сброса или работу с несколькими счётчиками.
❤17👍5🔥2
Когда впервые сталкиваешься с type_traits в C++, они кажутся чем-то из мира метапрограммирования для продвинутых Сеньоров.
Но чем глубже разбираешься в плюсах, тем чаще ловишь себя на мысли: «А как вообще этот кусок кода собирается?», «Почему одна перегрузка сработала, а другая нет?», «Как можно элегантно отфильтровать типы на этапе компиляции?»
И тут внезапно узнаешь, что именно type_traits — это та самая опора, с которой можно решать такие задачи красиво и без хаков. Особенно если писать универсальный код, библиотеки, или хочешь просто понимать, как работает стандартная библиотека.
Сегодня прочитал пост Вани Ходора, бэкенд-разработчика из Яндекс Лавки, который как раз сделал гайд по type_traits — не про то, *что* они делают, а за что их можно полюбить. Не учебник, не документация, а маленькое путешествие по любимым трейтам с примерами, идеями и попытками реализации.
Будет полезно, даже если вы давно знакомы с шаблонами — с другой стороны посмотрите на знакомые конструкции, а может, и вдохновитесь на свой маленький эксперимент в шаблонном коде.
Но чем глубже разбираешься в плюсах, тем чаще ловишь себя на мысли: «А как вообще этот кусок кода собирается?», «Почему одна перегрузка сработала, а другая нет?», «Как можно элегантно отфильтровать типы на этапе компиляции?»
И тут внезапно узнаешь, что именно type_traits — это та самая опора, с которой можно решать такие задачи красиво и без хаков. Особенно если писать универсальный код, библиотеки, или хочешь просто понимать, как работает стандартная библиотека.
Сегодня прочитал пост Вани Ходора, бэкенд-разработчика из Яндекс Лавки, который как раз сделал гайд по type_traits — не про то, *что* они делают, а за что их можно полюбить. Не учебник, не документация, а маленькое путешествие по любимым трейтам с примерами, идеями и попытками реализации.
Будет полезно, даже если вы давно знакомы с шаблонами — с другой стороны посмотрите на знакомые конструкции, а может, и вдохновитесь на свой маленький эксперимент в шаблонном коде.
Telegram
this->notes.
#cpp
Сегодня подпивасный (если вы зожник, то пиво нулёвочка) пост, ведь в субботу надо отдыхать от прошедшей недели.
Микрогайд по type traits.
https://telegra.ph/Mikrogajd-po-type-traits-06-14
Сегодня подпивасный (если вы зожник, то пиво нулёвочка) пост, ведь в субботу надо отдыхать от прошедшей недели.
Микрогайд по type traits.
https://telegra.ph/Mikrogajd-po-type-traits-06-14
❤🔥6🔥4❤2🥰1🎉1
🧠 Продвинутая задача на C++ — Оптимальный доступ к матрице с кешированием
Задача:
У вас есть матрица
Нужно реализовать класс
- Быстрый доступ
- Локальность данных при сканировании по строкам и по столбцам
- При этом: сравнить производительность строкового и столбцового прохода
Вопрос:
Почему сканирование по строкам быстрее, чем по столбцам, даже если данные одинаковые?
---
Разбор:
Ответ:
Память в C++ выделяется линейно.
В
То есть
Когда мы сканируем по строкам, процессор использует кеш строк памяти эффективно.
Когда же мы сканируем по столбцам, мы прыгаем по памяти через
---
🧠 Вывод:
- Даже при правильном коде, порядок доступа к памяти критически важен
- Понимание устройства кеша CPU помогает писать реально быстрый код
- Такие задачи полезны для подготовки к системному программированию, оптимизации и собеседованиям
#cpp #performance #cache #memory #optimize
Задача:
У вас есть матрица
N x M
, хранящаяся в виде одномерного массива (row-major). Нужно реализовать класс
Matrix
, поддерживающий:- Быстрый доступ
get(i, j)
и set(i, j, value)
- Локальность данных при сканировании по строкам и по столбцам
- При этом: сравнить производительность строкового и столбцового прохода
int main() {
Matrix mat(10000, 10000);
// Заполнить матрицу числами
for (int i = 0; i < 10000; ++i)
for (int j = 0; j < 10000; ++j)
mat.set(i, j, i + j);
// Сумма по строкам
long long row_sum = 0;
for (int i = 0; i < 10000; ++i)
for (int j = 0; j < 10000; ++j)
row_sum += mat.get(i, j);
// Сумма по столбцам
long long col_sum = 0;
for (int j = 0; j < 10000; ++j)
for (int i = 0; i < 10000; ++i)
col_sum += mat.get(i, j);
}
Вопрос:
Почему сканирование по строкам быстрее, чем по столбцам, даже если данные одинаковые?
---
Разбор:
class Matrix {
private:
int rows, cols;
std::vector<int> data;
public:
Matrix(int r, int c) : rows(r), cols(c), data(r * c) {}
int get(int i, int j) const {
return data[i * cols + j];
}
void set(int i, int j, int value) {
data[i * cols + j] = value;
}
};
Ответ:
Память в C++ выделяется линейно.
В
std::vector<int> data
, элементы строки хранятся подряд в памяти. То есть
mat[0][0], mat[0][1], ..., mat[0][9999]
идут подряд.Когда мы сканируем по строкам, процессор использует кеш строк памяти эффективно.
Когда же мы сканируем по столбцам, мы прыгаем по памяти через
cols
шагов → кеш не успевает подгружать нужные блоки → больше cache misses → медленнее.---
🧠 Вывод:
- Даже при правильном коде, порядок доступа к памяти критически важен
- Понимание устройства кеша CPU помогает писать реально быстрый код
- Такие задачи полезны для подготовки к системному программированию, оптимизации и собеседованиям
#cpp #performance #cache #memory #optimize
❤13🔥4👍1🥰1
📘 Шпаргалки по SQL — база и оконные функции в одном месте
Хочешь быстро освежить SQL или подготовиться к собеседованию?
Нашёл отличные PDF-шпаргалки, которые удобно сохранить себе и использовать как в работе, так и в учёбе.
🔹 Базовый SQL:
Каждая команда объясняется не только по синтаксису, но и по сути — когда и зачем использовать.
1️⃣
2️⃣ Все типы
3️⃣
4️⃣ Агрегатные функции и фильтрация
Основы SQL
🔹 Оконные функции (window functions):
Это уже продвинутый уровень, особенно полезный для аналитиков и дата-инженеров.
1️⃣
2️⃣
3️⃣ Работа с рамками окна:
4️⃣ Сортировка внутри окна и реальные примеры запросов
🔗 Оконные функции в SQL
📌 Когда только начинал учить SQL, не хватало понятных материалов. А тут — всё чётко, наглядно и по делу. За это авторам — уважение 🙌
▶️ Сохраняйте себе, чтобы не потерять
Хочешь быстро освежить SQL или подготовиться к собеседованию?
Нашёл отличные PDF-шпаргалки, которые удобно сохранить себе и использовать как в работе, так и в учёбе.
🔹 Базовый SQL:
Каждая команда объясняется не только по синтаксису, но и по сути — когда и зачем использовать.
1️⃣
SELECT
, WHERE
, GROUP BY
, HAVING
2️⃣ Все типы
JOIN
с примерами 3️⃣
CASE WHEN
, UNION
и подзапросы 4️⃣ Агрегатные функции и фильтрация
Основы SQL
🔹 Оконные функции (window functions):
Это уже продвинутый уровень, особенно полезный для аналитиков и дата-инженеров.
1️⃣
ROW_NUMBER
, RANK
, DENSE_RANK
, NTILE
2️⃣
LAG
, LEAD
, FIRST_VALUE
, LAST_VALUE
3️⃣ Работа с рамками окна:
ROWS BETWEEN
, RANGE
, GROUPS
4️⃣ Сортировка внутри окна и реальные примеры запросов
📌 Когда только начинал учить SQL, не хватало понятных материалов. А тут — всё чётко, наглядно и по делу. За это авторам — уважение 🙌
Please open Telegram to view this post
VIEW IN TELEGRAM
👍9🔥4❤3
💻 Amazon выпустила Kiro — новый ИИ-ассистент для разработчиков на базе VS Code. Компания создала собственный форк популярного редактора, дополнив его автономными нейросетевыми агентами. Они умеют не только проверять код в чате, но и самостоятельно исправлять ошибки, писать тесты и документацию.
Редактор обладает функцией Kiro Specs, позволяющей задавать ИИ конкретные задачи и получать отчеты об их выполнении. Пока сервис бесплатный, но Amazon уже анонсировал платные тарифы до $39 в месяц. Kiro встает в один ряд с Cursor и Windsurf, усиливая конкуренцию на рынке умных редакторов кода.
🔗 Ссылка - *клик*
@cpluspluc
Редактор обладает функцией Kiro Specs, позволяющей задавать ИИ конкретные задачи и получать отчеты об их выполнении. Пока сервис бесплатный, но Amazon уже анонсировал платные тарифы до $39 в месяц. Kiro встает в один ряд с Cursor и Windsurf, усиливая конкуренцию на рынке умных редакторов кода.
🔗 Ссылка - *клик*
@cpluspluc
❤14👍3🔥3😱2🙊1
🔧 cmake-init — генератор CMake-проектов, который избавляет от рутинной настройки. Этот инструмент создаёт готовую структуру с поддержкой FetchContent, разделением целей для разработчиков и пользователей, а также интегрирует современные практики CMake.
Проект особенно полезен тем, кто устал править шаблоны вручную: он сразу настраивает линтинг, тестирование и документацию через Doxygen. Поддерживает Conan и vcpkg, а также предлагает удобные пресеты для CLion и VSCode.
🤖 GitHub
@cpluspluc
Проект особенно полезен тем, кто устал править шаблоны вручную: он сразу настраивает линтинг, тестирование и документацию через Doxygen. Поддерживает Conan и vcpkg, а также предлагает удобные пресеты для CLion и VSCode.
🤖 GitHub
@cpluspluc
❤8🔥7👍4
⚙️ Vulkan-Hpp — современные C++-биндинги для Vulkan API, разработанные Khronos Group. Этот заголовочный файл заменяет громоздкий C-интерфейс типобезопасными классами, шаблонами и RAII-обёртками, сохраняя нулевые накладные расходы.
У инструмента есть возможность выбора между исключениями и возвратом кодов ошибок через макросы. Для управления ресурсами доступны как unique-хэндлы, так и полноценные RAII-классы в пространстве имён vk::raii. Проект автоматически генерируется из спецификации Vulkan и предлагает:
— Нативные C++-конструкторы для структур Vulkan
— Безопасную работу с перечислениями и битовыми флагами
— Интеграцию с STL-контейнерами через ArrayProxy
— Поддержку цепочек структур через шаблон StructureChain
🤖 GitHub
@cpluspluc
У инструмента есть возможность выбора между исключениями и возвратом кодов ошибок через макросы. Для управления ресурсами доступны как unique-хэндлы, так и полноценные RAII-классы в пространстве имён vk::raii. Проект автоматически генерируется из спецификации Vulkan и предлагает:
— Нативные C++-конструкторы для структур Vulkan
— Безопасную работу с перечислениями и битовыми флагами
— Интеграцию с STL-контейнерами через ArrayProxy
— Поддержку цепочек структур через шаблон StructureChain
🤖 GitHub
@cpluspluc
❤11👍6🔥5
This media is not supported in your browser
VIEW IN TELEGRAM
2 августа Яндекс проведет C++ Zero Cost Conf
Практикующие эксперты из Яндекса, VK, Ozon и других компаний выступят с докладами и представят реальные кейсы с измеримыми метриками.
Программа выступлений в Москве:
🔹Василий Рамаданов, старший инженер-программист Yadro, разберёт поведение std::simd на x86 и ARM;
🔹 Антон Полухин, руководитель группы разработки общих компонентов Техплатформы Городских сервисов Яндекса, расскажет, как использовать модули в больших существующих проектах с поддержкой старых стандартов;
🔹 Сергей Слотин, C++-эксперт и автор «Algorithms for Modern Hardware» выступит на тему «Performance Puzzlers»: будем изучать особенности работы процессоров и компиляторов.
Остальные доклады с разбивкой по городам — на сайте конференции.
Участников офлайна ждёт C++ код-гольф: решение задачи с минимальным числом символов. В Москве дополнительно пройдет воркшоп по непрерывному профилированию Perforator и Case Lab по надёжности микросервисов с решением задач.
Ивент пройдет в трёх городах — Москве, Белграде (онлайн/офлайн) и Санкт-Петербурге (только офлайн). Зарегистрироваться можно здесь
Практикующие эксперты из Яндекса, VK, Ozon и других компаний выступят с докладами и представят реальные кейсы с измеримыми метриками.
Программа выступлений в Москве:
🔹Василий Рамаданов, старший инженер-программист Yadro, разберёт поведение std::simd на x86 и ARM;
🔹 Антон Полухин, руководитель группы разработки общих компонентов Техплатформы Городских сервисов Яндекса, расскажет, как использовать модули в больших существующих проектах с поддержкой старых стандартов;
🔹 Сергей Слотин, C++-эксперт и автор «Algorithms for Modern Hardware» выступит на тему «Performance Puzzlers»: будем изучать особенности работы процессоров и компиляторов.
Остальные доклады с разбивкой по городам — на сайте конференции.
Участников офлайна ждёт C++ код-гольф: решение задачи с минимальным числом символов. В Москве дополнительно пройдет воркшоп по непрерывному профилированию Perforator и Case Lab по надёжности микросервисов с решением задач.
Ивент пройдет в трёх городах — Москве, Белграде (онлайн/офлайн) и Санкт-Петербурге (только офлайн). Зарегистрироваться можно здесь
❤10🔥6🥰4
⛓️ CUDA Core Compute Libraries (CCCL) — единый репозиторий от NVIDIA, объединяющий три ключевые библиотеки для работы с CUDA: Thrust, CUB и libcudacxx. Проект упрощает разработку высокопроизводительных вычислений, предлагая переносимые абстракции для разных GPU-архитектур.
Библиотеки поддерживают атомарные операции через cuda::atomic_ref и интеграцию с CMake. CCCL можно использовать как с официальным CUDA Toolkit, так и отдельно через GitHub или Conda, что удобно для экспериментов с новыми функциями до их выхода в стабильных версиях CUDA.
🤖 GitHub
@cpluspluc
Библиотеки поддерживают атомарные операции через cuda::atomic_ref и интеграцию с CMake. CCCL можно использовать как с официальным CUDA Toolkit, так и отдельно через GitHub или Conda, что удобно для экспериментов с новыми функциями до их выхода в стабильных версиях CUDA.
🤖 GitHub
@cpluspluc
🔥14👍6❤4🥰1🤔1
🗣️ TEN VAD — ультраточная система обнаружения речи в реальном времени
Это современная модель Voice Activity Detection (VAD), превосходящая по точности популярные решения вроде WebRTC VAD и Silero VAD.
Она стала частью фреймворка TEN Framework — платформы для создания мультимодальных голосовых агентов.
🔹 Что делает TEN VAD особенной:
• 📈 Точность на SOTA-уровне — протестирована на LibriSpeech, GigaSpeech, DNS Challenge
• 🕒 Минимальная задержка — точное определение начала и конца речи в реальном времени
• 🧩 Низкие требования к ресурсам — подходит даже для мобильных устройств
• ⚙️ Гибкая интеграция — поддержка C и Python, работает на Linux, Windows, macOS, Android и iOS
• 🔊 Оптимизирована для 16 кГц аудио, с шагами 10/16 мс
https://huggingface.co/TEN-framework/ten-vad
@cpluspluc
Это современная модель Voice Activity Detection (VAD), превосходящая по точности популярные решения вроде WebRTC VAD и Silero VAD.
Она стала частью фреймворка TEN Framework — платформы для создания мультимодальных голосовых агентов.
🔹 Что делает TEN VAD особенной:
• 📈 Точность на SOTA-уровне — протестирована на LibriSpeech, GigaSpeech, DNS Challenge
• 🕒 Минимальная задержка — точное определение начала и конца речи в реальном времени
• 🧩 Низкие требования к ресурсам — подходит даже для мобильных устройств
• ⚙️ Гибкая интеграция — поддержка C и Python, работает на Linux, Windows, macOS, Android и iOS
• 🔊 Оптимизирована для 16 кГц аудио, с шагами 10/16 мс
https://huggingface.co/TEN-framework/ten-vad
@cpluspluc
❤11👍5🔥3
🔌 Kompute — универсальный фреймворк для GPU-вычислений, работающий с Vulkan и поддерживающий графические карты AMD, NVIDIA, Qualcomm и других производителей. Проект разработан с упором на производительность, асинхронную обработку и кроссплатформенность, включая мобильные устройства.
Фреймворк предлагает гибкость для разработчиков, позволяя работать с тензорами, шейдерами и параллельными вычислениями. Под капотом — чистая интеграция с Vulkan, что делает его мощным инструментом для машинного обучения, игрового движка и других GPU-интенсивных задач. Проект поддерживается Linux Foundation и активно развивается с открытым исходным кодом.
🤖 GitHub
@cpluspluc
Фреймворк предлагает гибкость для разработчиков, позволяя работать с тензорами, шейдерами и параллельными вычислениями. Под капотом — чистая интеграция с Vulkan, что делает его мощным инструментом для машинного обучения, игрового движка и других GPU-интенсивных задач. Проект поддерживается Linux Foundation и активно развивается с открытым исходным кодом.
🤖 GitHub
@cpluspluc
🔥7❤🔥3🥰2
This media is not supported in your browser
VIEW IN TELEGRAM
Регистрация на конференцию Яндекса C++ Zero Cost Conf закрывается 28 июля!
Напоминаем программу:
— Доклады: Алиасинг памяти, Performance Puzzlers, C++20 Модули (Москва); Векторизация 2025, C++ vs C в роботах (Белград); Линейная алгебра в C++ (Питер) и другие. Полный список докладов можно посмотреть на сайте.
— Код-ревью с поиском и исправлением ошибок в коде — во всех городах.
— В Москве дополнительно проведут код-гольф на C++, воркшоп по Perforator и Case Lab по надежности сервисов.
Конференция пройдет уже 2 августа, успейте зарегистрироваться на сайте.
Напоминаем программу:
— Доклады: Алиасинг памяти, Performance Puzzlers, C++20 Модули (Москва); Векторизация 2025, C++ vs C в роботах (Белград); Линейная алгебра в C++ (Питер) и другие. Полный список докладов можно посмотреть на сайте.
— Код-ревью с поиском и исправлением ошибок в коде — во всех городах.
— В Москве дополнительно проведут код-гольф на C++, воркшоп по Perforator и Case Lab по надежности сервисов.
Конференция пройдет уже 2 августа, успейте зарегистрироваться на сайте.
🔥8❤4🎉4
⛓️ CUDA Core Compute Libraries (CCCL) — единый репозиторий от NVIDIA, объединяющий три ключевые библиотеки для работы с CUDA: Thrust, CUB и libcudacxx. Проект упрощает разработку высокопроизводительных вычислений, предлагая переносимые абстракции для разных GPU-архитектур.
Библиотеки поддерживают атомарные операции через cuda::atomic_ref и интеграцию с CMake. CCCL можно использовать как с официальным CUDA Toolkit, так и отдельно через GitHub или Conda, что удобно для экспериментов с новыми функциями до их выхода в стабильных версиях CUDA.
🤖 GitHub
@cpluspluc
Библиотеки поддерживают атомарные операции через cuda::atomic_ref и интеграцию с CMake. CCCL можно использовать как с официальным CUDA Toolkit, так и отдельно через GitHub или Conda, что удобно для экспериментов с новыми функциями до их выхода в стабильных версиях CUDA.
🤖 GitHub
@cpluspluc
❤6🔥2🥰2
⚡️ Почему лучшие разработчики всегда на шаг впереди?
Потому что они знают, где брать настоящие инсайд!
Оставь “программирование в вакууме” в прошлом, выбирай свой стек — подпишись и погружайся в поток идей, лайфхаков и знаний, которые не найдёшь в открытом доступе.
ИИ: t.me/ai_machinelearning_big_data
Python: t.me/pythonl
Linux: t.me/linuxacademiya
Devops: t.me/DevOPSitsec
Базы данных: t.me/sqlhub
Мл собес t.me/machinelearning_interview
C++ t.me/cpluspluc
Docker: t.me/DevopsDocker
Хакинг: t.me/linuxkalii
МЛ: t.me/machinelearning_ru
Data Science: t.me/data_analysis_ml
Javascript: t.me/javascriptv
C#: t.me/csharp_ci
Java: t.me/java_library
Python собеседования: t.me/python_job_interview
Мобильная разработка: t.me/mobdevelop
Golang: t.me/Golang_google
React: t.me/react_tg
Rust: t.me/rust_code
ИИ: t.me/vistehno
PHP: t.me/phpshka
Android: t.me/android_its
Frontend: t.me/front
Big Data: t.me/bigdatai
МАТЕМАТИКА: t.me/data_math
Kubernets: t.me/kubernetc
Разработка игр: https://t.me/gamedev
Физика: t.me/fizmat
SQL: t.me/databases_tg
Папка Go разработчика: t.me/addlist/MUtJEeJSxeY2YTFi
Папка Python разработчика: t.me/addlist/eEPya-HF6mkxMGIy
Папка ML: https://t.me/addlist/2Ls-snqEeytkMDgy
Папка FRONTEND: https://t.me/addlist/mzMMG3RPZhY2M2Iy
🎓954ГБ ОПЕНСОРС КУРСОВ: @courses
😆ИТ-Мемы: t.me/memes_prog
🇬🇧Английский: t.me/english_forprogrammers
🧠ИИ: t.me/vistehno
🖥 Chatgpt для кода в тг: @Chatgpturbobot -
📕Ит-книги: https://t.me/addlist/BkskQciUW_FhNjEy
💼ИТ-вакансии t.me/addlist/_zyy_jQ_QUsyM2Vi
Подпишись, чтобы всегда знать, куда двигаться дальше!
Потому что они знают, где брать настоящие инсайд!
Оставь “программирование в вакууме” в прошлом, выбирай свой стек — подпишись и погружайся в поток идей, лайфхаков и знаний, которые не найдёшь в открытом доступе.
ИИ: t.me/ai_machinelearning_big_data
Python: t.me/pythonl
Linux: t.me/linuxacademiya
Devops: t.me/DevOPSitsec
Базы данных: t.me/sqlhub
Мл собес t.me/machinelearning_interview
C++ t.me/cpluspluc
Docker: t.me/DevopsDocker
Хакинг: t.me/linuxkalii
МЛ: t.me/machinelearning_ru
Data Science: t.me/data_analysis_ml
Javascript: t.me/javascriptv
C#: t.me/csharp_ci
Java: t.me/java_library
Python собеседования: t.me/python_job_interview
Мобильная разработка: t.me/mobdevelop
Golang: t.me/Golang_google
React: t.me/react_tg
Rust: t.me/rust_code
ИИ: t.me/vistehno
PHP: t.me/phpshka
Android: t.me/android_its
Frontend: t.me/front
Big Data: t.me/bigdatai
МАТЕМАТИКА: t.me/data_math
Kubernets: t.me/kubernetc
Разработка игр: https://t.me/gamedev
Физика: t.me/fizmat
SQL: t.me/databases_tg
Папка Go разработчика: t.me/addlist/MUtJEeJSxeY2YTFi
Папка Python разработчика: t.me/addlist/eEPya-HF6mkxMGIy
Папка ML: https://t.me/addlist/2Ls-snqEeytkMDgy
Папка FRONTEND: https://t.me/addlist/mzMMG3RPZhY2M2Iy
🎓954ГБ ОПЕНСОРС КУРСОВ: @courses
😆ИТ-Мемы: t.me/memes_prog
🇬🇧Английский: t.me/english_forprogrammers
🧠ИИ: t.me/vistehno
📕Ит-книги: https://t.me/addlist/BkskQciUW_FhNjEy
💼ИТ-вакансии t.me/addlist/_zyy_jQ_QUsyM2Vi
Подпишись, чтобы всегда знать, куда двигаться дальше!
Please open Telegram to view this post
VIEW IN TELEGRAM
❤2👍2🔥2🖕2
🧠 Задача: Реализация `TypeList` с поддержкой операций на этапе компиляции
📌 Описание
Реализуйте шаблонный класс
1. Получение длины списка (`length`)
2. Получение типа по индексу (`at<N>`)
3. Добавление типа в начало списка (`push_front<T>`)
4. Удаление первого типа (`pop_front`)
5. Проверка наличия типа в списке (`contains<T>`)
6. Фильтрация по условию (например, только целочисленные типы) (`filter<Predicate>`)
Всё это должно работать на этапе компиляции, без использования
🧩 Пример использования
🛠 Требования к реализации
Используйте только возможности шаблонов и constexpr.
Не используйте std::tuple, std::array, if constexpr (если хотите усложнить — можно).
Предпочтительно использование C++17 или выше.
Код должен компилироваться и проходить все static_assert.
🧪 Бонусное задание
Реализуйте print_types() — функцию, которая выводит все типы из списка в std::cout (можно использовать typeid, PRETTY_FUNCTION или другие хаки).
@cpluspluc
📌 Описание
Реализуйте шаблонный класс
TypeList
, который представляет собой список типов на этапе компиляции (compile-time type list). Он должен поддерживать следующие операции:1. Получение длины списка (`length`)
2. Получение типа по индексу (`at<N>`)
3. Добавление типа в начало списка (`push_front<T>`)
4. Удаление первого типа (`pop_front`)
5. Проверка наличия типа в списке (`contains<T>`)
6. Фильтрация по условию (например, только целочисленные типы) (`filter<Predicate>`)
Всё это должно работать на этапе компиляции, без использования
std::tuple
или других runtime-контейнеров.🧩 Пример использования
#include <type_traits>
#include <iostream>
// Пример предиката
template<typename T>
struct is_integral : std::is_integral<T> {};
int main() {
using MyList = TypeList<int, char, float, double, short>;
static_assert(MyList::length == 5);
static_assert(std::is_same_v<MyList::at<0>, int>);
static_assert(std::is_same_v<MyList::at<2>, float>);
using WithBool = MyList::push_front<bool>;
static_assert(WithBool::length == 6);
static_assert(std::is_same_v<WithBool::at<0>, bool>);
using Popped = WithBool::pop_front;
static_assert(std::is_same_v<Popped, MyList>);
static_assert(MyList::contains<int>);
static_assert(!MyList::contains<bool>);
using OnlyIntegral = MyList::filter<is_integral>;
static_assert(std::is_same_v<OnlyIntegral, TypeList<int, char, short>>);
return 0;
}
🛠 Требования к реализации
Используйте только возможности шаблонов и constexpr.
Не используйте std::tuple, std::array, if constexpr (если хотите усложнить — можно).
Предпочтительно использование C++17 или выше.
Код должен компилироваться и проходить все static_assert.
🧪 Бонусное задание
Реализуйте print_types() — функцию, которая выводит все типы из списка в std::cout (можно использовать typeid, PRETTY_FUNCTION или другие хаки).
@cpluspluc
❤8🔥3👍2
🎬 Blender 4.5 LTS — главное обновление года для 3D-художников
Новая долгосрочная версия популярного графического пакета принесла ключевые улучшения: полную поддержку Vulkan в EEVEE, ускоренную загрузку текстур и революционный инструмент Point Cloud для работы с облаками точек.
Особого внимания заслуживает обновлённый Grease Pencil с экспортом анимированных SVG и интеграцией с композитингом. Рендеринг теперь на 40% быстрее благодаря многопоточной компиляции шейдеров.
🔗 Ссылка - *клик*
@cpluspluc
Новая долгосрочная версия популярного графического пакета принесла ключевые улучшения: полную поддержку Vulkan в EEVEE, ускоренную загрузку текстур и революционный инструмент Point Cloud для работы с облаками точек.
Особого внимания заслуживает обновлённый Grease Pencil с экспортом анимированных SVG и интеграцией с композитингом. Рендеринг теперь на 40% быстрее благодаря многопоточной компиляции шейдеров.
🔗 Ссылка - *клик*
@cpluspluc
👍6❤5🔥5