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

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

前往频道在 Telegram

Полезные материалы по всему, что может быть полезно плюсовику/сишнику. По всем вопросам @evgenycarter

显示更多
7 322
订阅者
-324 小时
+57
+1230
帖子存档
Алгоритмы манипуляций с битами В статье приведены алгоритмы обработки коротких битовых строк, обычно вмещающихся в машинное с
Алгоритмы манипуляций с битами В статье приведены алгоритмы обработки коротких битовых строк, обычно вмещающихся в машинное слово, в большей степени эти алгоритмы предназначены для обработки строк длины 32 или 64, но многие из них можно применять для SIMD инструкций или даже GPU. https://habr.com/ru/articles/886182/ #cpp #programming 👉 @cpp_lib

Game++. Building arcs Прежде чем рассказать про архитектуры игровых движков, я подумал, что будет полезно немного рассказать
Game++. Building arcs Прежде чем рассказать про архитектуры игровых движков, я подумал, что будет полезно немного рассказать о том, как я понимаю архитектуру ПО и как это связано с играми. Во-первых они (архитектуры) есть, чтобы бы там не врали про игрострой. Во-вторых их оказывается больше одной. Это, возможно, поможет вам понять, почему остальные статьи написаны в таком порядке, или без какого-то порядка. В худшем случае, когда вас втянут в спор о том, насколько отвратительны (или, наоборот, потрясающе гениальны) отдельные игровые движки и их архитектуры, у вас будет пара аргументов и понимание что к чему. Символично, что статья про архитектуру игрового движка появилась после того, как было рассказано про строки, мультипоток, применение алгоритмов: просто оно так и в жизни получается, мы сначала пишем код, редактор, игру - костяк проекта обрастает мясом, и тут нас догоняют проблемы, на которые все забивали, потому что надо было выдать хоть что-то похожее на работающий вариант. Но от того, что мы забивали на проблемы и заметали их под коврик беклога, проблемами быть они не перестали. Вы не получите из статьи знаний об аллокаторах, контейнерах, или математике, стоящей за физикой игры. Так же я не ставлю целью научить вас, как применять A* разбиение в поиске пути неписей или моделировать реверберацию комнаты. Вместо этого есть размышления о коде между всем этим. И даже не столько про написание кода, сколько о его организации. https://habr.com/ru/articles/885780/ #cpp #programming 👉 @cpp_lib

Botan — это мощная криптографическая библиотека на C++, поддерживающая широкий спектр алгоритмов и предназначенная для исполь
Botan — это мощная криптографическая библиотека на C++, поддерживающая широкий спектр алгоритмов и предназначенная для использования в различных проектах. Она отличается модульной архитектурой, хорошей производительностью и кроссплатформенностью. Основные возможности: 🔹 Поддержка симметричных и асимметричных алгоритмов шифрования 🔹 Генерация и управление ключами 🔹 Хеш-функции и HMAC 🔹 Поддержка TLS и сертификатов X.509 🔹 Стандартизованные и экспериментальные криптографические примитивы Библиотека активно развивается и используется в различных областях, включая безопасность сетевых соединений, шифрование данных и аутентификацию. https://github.com/randombit/botan #cpp #programming 👉 @cpp_lib

С++ и безопасность: правда ли все так плохо? Сергей проанализировал недавний отчет NSA и рассказал, так ли плохо обстоят дела с безопасностью в С++ на самом деле и что современная индустрия предлагает для решения этого вопроса. Он разобрал проблемы с безопасностью в С++ на открытых примерах из Chromium, среди которых: — работа с памятью; — UB; — C legacy, строки, арифметика, преобразования типов. Спикер также показал различные подходы к митигации описанных проблем, в частности: — статический анализ; — динамический анализ; — фаззинг-тестирование; — харденинг; — выделение безопасных подмножеств языка: Misra, AUTOSAR, стандарт Google; — методология SDL как комплексное решение; — (бонус) подход KasperskyOS по определению недоверенных компонентов, допускающих наличие уязвимостей, но без возможности их проэксплуатировать и развить атаку. источник #cpp #programming 👉 @cpp_lib

C++ — мощный инструмент, но с ним нужно правильно работать Хотите писать на C++, но настройка окружения кажется головной боль
C++ — мощный инструмент, но с ним нужно правильно работать Хотите писать на C++, но настройка окружения кажется головной болью? ◽️ Компилятор не видит файлы? ◽️Дебаг работает через раз? ◽️VSCode — просто красивый редактор? 💡 Приходите на открытый вебинар «Готовим рабочее место: C++ + VSCode»! 📅 5 марта в 20:00 (мск) Мы разберём: ◽️Как настроить VSCode для C++: компиляторы, расширения, дебаг ◽️Как запускать программы без ошибок и ручной магии ◽️Как сделать среду разработки удобной и эффективной 🎯 А ещё всем участникам подарим скидку на топовый курс «C++ Developer»! 🔗 Регистрация: https://vk.cc/cIZCSZ Реклама. ООО «Отус онлайн-образование», ОГРН 1177746618576

🚀Это отличный ресурс для программистов, работающих с C++. Можно найти подробную документацию по стандартной библиотеке, STL,
+1
🚀Это отличный ресурс для программистов, работающих с C++. Можно найти подробную документацию по стандартной библиотеке, STL, различным версиям стандарта C++, а также примеры кода и объяснения по ключевым аспектам языка. Справочник по C++ C++11, C++14, C++17, C++20, C++23, C++26 │ Поддержка компиляторами C++11, C++14, C++17, C++20, C++23, C++26 Справочник по языку C C89, C95, C99, C11, C17, C23 │ Поддержка компиляторами C99, C23 https://ru.cppreference.com/w/ #cpp #programming 👉 @cpp_lib

📌 Оптимизация кода в C++: Используем std::move правильно! Привет, друзья! Сегодня я расскажу об одной из самых частых ошибок, связанных с std::move. Многие знают, что std::move не перемещает объект, а лишь превращает его в rvalue. Но как его использовать правильно? Давайте разбираться! ❌ Ошибка: Бессмысленный std::move

std::string getString() {
    std::string str = "Hello, world!";
    return std::move(str); // ❌ Неэффективно
}
Что здесь не так? Возвращаемый std::string и так является временным объектом (NRVO — оптимизация возврата), и std::move мешает этой оптимизации! В результате компилятор не сможет выполнить перемещение, а вызовет копирование. ✅ Правильный вариант:

std::string getString() {
    return "Hello, world!"; // ✅ NRVO оптимизация
}
🏆 Где std::move полезен? Используйте std::move, когда точно знаете, что объект больше не нужен и его можно переместить:

void processString(std::string str) { /* ... */ }

int main() {
    std::string s = "Example";
    processString(std::move(s)); // 🔥 Теперь перемещение!
}
⚡ Советы: 1️⃣ Не используйте std::move при возврате локальных объектов — дайте компилятору сделать свое дело! 2️⃣ Используйте std::move, когда объект больше не нужен — это ускорит работу кода. 3️⃣ После std::move не используйте переменную, кроме как для присвоения нового значения. #cpp #programming 👉 @cpp_lib

Получите оффер в YADRO всего за 3 дня! 🚀 Компания-лидер инженерной индустрии в России YADRO приглашает C++ Software Engineer
Получите оффер в YADRO всего за 3 дня! 🚀 Компания-лидер инженерной индустрии в России YADRO приглашает C++ Software Engineer на SPRINT OFFER. Команда Телеком ждёт кандидатов сразу в два направления: Telecom Platform и Разработка базовых станций с поддержкой LTE/GSM и 5G Core. Если вам интересно принять участие в разработке первых российский базовых станций стандартов GSM/LTE — присоединяйтесь к команде Телеком. Вы будете с нуля создавать решения для беспроводных мобильных сетей и сопутствующих услуг: от исследований и прототипирования до вывода в коммерческое использование. Большую часть кода разработчики пишут на C++. В зависимости от компонента применяют как последние «фишки» С++20, так и занимаются низкоуровневой оптимизацией кода для повышения производительности. 🔵 Читайте подробности на сайте и оставляйте заявку до 9 марта → по ссылке. Присоединяйтесь к проекту, где сможете создавать системы, которыми будут пользоваться сотни тысяч людей!

👩‍💻 C++: не просто язык, а ключ к карьере в топовой IT-компании! Повышение квалификации на курсе «C++ Developer. Profession
👩‍💻 C++: не просто язык, а ключ к карьере в топовой IT-компании! Повышение квалификации на курсе «C++ Developer. Professional» — ваш ключ к тому, чтобы прокачать навыки и стать востребованным разработчиком. Что вас ждёт: — Работа с новыми стандартами C++20 и C++23. — 14 практических работ для портфолио. — Освоение многопоточного программирования, сетей и работы с данными. — Понимание паттернов проектирования и тонкостей языка. Почему выбирают нас? — Преподаватели — опытные эксперты из ведущих IT-компаний. — Живые лекции, поддержка на каждом этапе обучения. — Диплом OTUS, который ценят работодатели. 🔥 До 28.02 скидка на все курсы 10%, кроме этого дарим промокод CPPPRO2025_02 который прибавляет к скидке еще 5% !!! 🎫 Курс можно приобрести в рассрочку ➡️ Пройти тест и забрать скидку: https://vk.cc/cIX0dR Реклама. ООО «Отус онлайн-образование», ОГРН 1177746618576

Сборка C++ проектов. Пакетный менеджер CONAN. Game Engine серии 0:00:00 - Введение 0:02:43 - Conan. Теория 0:07:31 - Conan. Установка 0:10:44 - Conan. Базовая настройка 0:17:04 - ConanCenter. JSON 0:34:46 - GTest 0:54:43 - Chuck Norris API, cpr 1:15:19 - Автоматизация сборок источник #cpp #programming 👉 @cpp_lib

Проект для мидлов: создайте курс для Яндекс Практикума! Яндекс Практикум — сервис современного онлайн-образования, где обучаю
Проект для мидлов: создайте курс для Яндекс Практикума! Яндекс Практикум — сервис современного онлайн-образования, где обучают актуальным цифровым профессиям. Сейчас есть возможность присоединиться к команде и разработать курс C++ разработчика. Роль автора подойдёт тем, кто любит погрузиться с головой в контент — разрабатывать уроки, задания, тесты, чек-листы, памятки, квизы; нагрузка от 10 часов в неделю. Будущего коллегу окружим комфортом: ▪︎ сотрудничайте с нами удалённо, ▪︎ получайте дополнительный доход, ▪︎ влейтесь в наше энергичное и яркое комьюнити! Посмотрите, что ожидают от кандидата, и откликайтесь, если интересно.

📌 Оптимизация использования std::unordered_map в C++ Сегодня я расскажу вам, как оптимизировать работу std::unordered_map и избежать неожиданных тормозов. std::unordered_map — мощная хеш-таблица в C++, но при неправильном использовании она может замедлить ваш код. Давайте разберем основные моменты, которые помогут избежать проблем. 🔥 1. Выбирайте правильный хеш-функтор По умолчанию std::unordered_map использует std::hash<Key>, но если ключ — это пользовательский тип данных (например, struct`), то стандартного `std::hash не существует, и придется писать свой. Пример кастомного хеша для структуры:

struct MyKey {
    int x, y;

    bool operator==(const MyKey& other) const {
        return x == other.x && y == other.y;
    }
};

struct MyHash {
    size_t operator()(const MyKey& key) const {
        return std::hash<int>{}(key.x) ^ (std::hash<int>{}(key.y) << 1);
    }
};

std::unordered_map<MyKey, std::string, MyHash> my_map;
Используем ^ (XOR) и << (битовый сдвиг), чтобы уменьшить коллизии. ⚡ 2. Контролируйте размер bucket'ов Если std::unordered_map сильно увеличивается, он перехеширует (rehash), что может быть дорогой операцией. Чтобы избежать лишних перераспределений:

my_map.reserve(10000); // Подготавливаем место под 10,000 элементов
Это ускорит вставку, так как уменьшит количество перераспределений памяти. 🚀 3. Избегайте ненужного копирования ключей Если ключ — это сложный объект, избегайте его копирования:

std::unordered_map<std::string, int> data;
std::string key = "long_key_string";

int value = data[key]; // ❌ НЕ ЭФФЕКТИВНО: создаст пустую запись, если ключа нет
int value = data.at(key); // ✅ БЫСТРЕЕ: выбросит исключение, если ключа нет
Еще лучше использовать find():

auto it = data.find(key);
if (it != data.end()) {
    int value = it->second;
}
🏆 Вывод ✅ Используйте кастомные хеш-функции, если ключи нестандартные ✅ Резервируйте память заранее (reserve) ✅ Уменьшайте копирование ключей, используя find() и at() А вы используете std::unordered_map в своих проектах? Может, у вас есть свои фишки? Пишите в комментариях! 👇🚀 #cpp #programming 👉 @cpp_lib

Приглашаем на встречу РГ21 по C++ Приходите обсудить новости последней встречи международного комитета по стандартизации язык
Приглашаем на встречу РГ21 по C++ Приходите обсудить новости последней встречи международного комитета по стандартизации языка. Ещё в программе — ответы на ваши вопросы о стандарте С++ и афтерпати. Встречу проведёт Антон Полухин, руководитель группы разработки общих компонентов Техплатформы городских сервисов Яндекса. Москва, онлайн и офлайн 25 марта. Регистрируйтесь.

Создаем эмулятор Sega Mega Drive на C++ В этой статье описано создание эмулятора 16-битной приставки Sega Mega Drive на C++.
Создаем эмулятор Sega Mega Drive на C++ В этой статье описано создание эмулятора 16-битной приставки Sega Mega Drive на C++. Будет много интересного: эмуляция процессора Motorola 68000, реверсинг игр, графика на OpenGL, шейдеры, и многое другое. И все это на современном C++. В статье много картинок, можно хоть на них посмотреть. https://habr.com/ru/articles/871284/ #cpp #programming 👉 @cpp_lib

#cpp #programming 👉 @cpp_lib
#cpp #programming 👉 @cpp_lib

Ваш код тормозит под нагрузкой? Не справляется с задачами параллельного вычисления? 💡 Приходите на открытый урок по многопот
Ваш код тормозит под нагрузкой? Не справляется с задачами параллельного вычисления? 💡 Приходите на открытый урок по многопоточному программированию C++! ▫️Вместе напишем многопоточную реализацию задачи подсчёта суммы чисел. ▫️Разберём примитивы синхронизации. ▫️Ускорим код с помощью стандартной библиотеки. 🎯 Вы начнёте осваивать многопоточное программирование и сделаете первый шаг к позициям middle+ в C++! А ещё получите скидку на большое обучение «C++ Developer». 📅 Успейте записаться на открытый вебинар 25 февраля в 20:00 (мск)! 🔗 Регистрируйтесь прямо сейчас и узнайте, как эффективно управлять потоками в C++: https://vk.cc/cISn4e Реклама. ООО «Отус онлайн-образование», ОГРН 1177746618576

Dear ImGui — это мощная библиотека для создания графических интерфейсов пользователя (GUI) с использованием C++. Она ориентир
+3
Dear ImGui — это мощная библиотека для создания графических интерфейсов пользователя (GUI) с использованием C++. Она ориентирована на разработчиков, которым нужен быстрый и удобный способ добавления интерфейса в приложения, такие как инструменты отладки, редакторы и визуализаторы. Особенности: - Простота и скорость — не требует сложной инициализации и минимально нагружает рендеринг. - Независимость от платформы — можно использовать с OpenGL, Vulkan, DirectX и другими графическими API. - Гибкость — позволяет создавать сложные UI-компоненты с минимальным количеством кода. - Активное сообщество — регулярные обновления и множество готовых решений. ИмGui подходит для использования в геймдеве, графических редакторах, утилитах для работы с данными и других проектах, требующих быстрого и интерактивного интерфейса. https://github.com/ocornut/imgui #cpp #programming 👉 @cpp_lib

#cpp #programming 👉 @cpp_lib
#cpp #programming 👉 @cpp_lib

Подборка Telegram каналов для программистов https://t.me/lifeproger Жизнь программиста. Авторский канал. https://t.me/devopslib Библиотека девопса | DevOps, SRE, Sysadmin https://t.me/rabota1C_rus 1С Работа Системное администрирование 📌 https://t.me/sysadmin_girl Девочка Сисадмин https://t.me/srv_admin_linux Админские угодья https://t.me/linux_srv Типичный Сисадмин https://t.me/linux_odmin Linux: Системный администратор https://t.me/devops_star DevOps Star (Звезда Девопса) https://t.me/i_linux Системный администратор https://t.me/linuxchmod Linux https://t.me/sys_adminos Системный Администратор https://t.me/tipsysdmin Типичный Сисадмин (фото железа, было/стало) https://t.me/sysadminof Книги для админов, полезные материалы https://t.me/i_odmin Все для системного администратора https://t.me/i_odmin_book Библиотека Системного Администратора https://t.me/i_odmin_chat Чат системных администраторов https://t.me/i_DevOps DevOps: Пишем о Docker, Kubernetes и др. https://t.me/sysadminoff Новости Линукс Linux 1C разработка 📌 https://t.me/odin1C_rus Cтатьи, курсы, советы, шаблоны кода 1С Программирование C++📌 https://t.me/cpp_lib Библиотека C/C++ разработчика https://t.me/cpp_knigi Книги для программистов C/C++ https://t.me/cpp_geek Учим C/C++ на примерах Программирование Python 📌 https://t.me/pythonofff Python академия. Учи Python быстро и легко🐍 https://t.me/BookPython Библиотека Python разработчика https://t.me/python_real Python подборки на русском и английском https://t.me/python_360 Книги по Python Rus Java разработка 📌 https://t.me/BookJava Библиотека Java разработчика https://t.me/java_360 Книги по Java Rus https://t.me/java_geek Учим Java на примерах GitHub Сообщество 📌 https://t.me/Githublib Интересное из GitHub Базы данных (Data Base) 📌 https://t.me/database_info Все про базы данных Мобильная разработка: iOS, Android 📌 https://t.me/developer_mobila Мобильная разработка https://t.me/kotlin_lib Подборки полезного материала по Kotlin Фронтенд разработка 📌 https://t.me/frontend_1 Подборки для frontend разработчиков https://t.me/frontend_sovet Frontend советы, примеры и практика! https://t.me/React_lib Подборки по React js и все что с ним связано Разработка игр 📌 https://t.me/game_devv Все о разработке игр Библиотеки 📌 https://t.me/book_for_dev Книги для программистов Rus https://t.me/programmist_of Книги по программированию https://t.me/proglb Библиотека программиста https://t.me/bfbook Книги для программистов https://t.me/books_reserv Книги для программистов БигДата, машинное обучение 📌 https://t.me/bigdata_1 Data Science, Big Data, Machine Learning, Deep Learning Программирование 📌 https://t.me/bookflow Лекции, видеоуроки, доклады с IT конференций https://t.me/coddy_academy Полезные советы по программированию https://t.me/rust_lib Полезный контент по программированию на Rust https://t.me/golang_lib Библиотека Go (Golang) разработчика https://t.me/itmozg Программисты, дизайнеры, новости из мира IT https://t.me/php_lib Библиотека PHP программиста 👨🏼‍💻👩‍💻 https://t.me/nodejs_lib Подборки по Node js и все что с ним связано https://t.me/ruby_lib Библиотека Ruby программиста QA, тестирование 📌 https://t.me/testlab_qa Библиотека тестировщика Шутки программистов 📌 https://t.me/itumor Шутки программистов Защита, взлом, безопасность 📌 https://t.me/thehaking Канал о кибербезопасности https://t.me/xakep_1 Статьи из "Хакера" Книги, статьи для дизайнеров 📌 https://t.me/ux_web Статьи, книги для дизайнеров Английский 📌 https://t.me/UchuEnglish Английский с нуля Математика 📌 https://t.me/Pomatematike Канал по математике https://t.me/phis_mat Обучающие видео, книги по Физике и Математике Excel лайфхак📌 https://t.me/Excel_lifehack https://t.me/tikon_1 Новости высоких технологий, науки и техники💡 https://t.me/mir_teh Мир технологий (Technology World) Вакансии 📌 https://t.me/sysadmin_rabota Системный Администратор https://t.me/progjob Вакансии в IT

📌 Оптимизация кода: std::string_view вместо std::string Привет, друзья! Сегодня хочу рассказать про std::string_view — полезный инструмент, который может значительно ускорить работу с строками в C++. Многие из вас, вероятно, используют std::string, но не всегда это лучший выбор. ❓ Что такое std::string_view? Это некопируемая, легковесная оболочка над строковыми данными. Она просто хранит указатель на начало строки и её длину, не создавая копии. Использование std::string_view вместо std::string позволяет избежать ненужных аллокаций памяти и ускорить код. 🔥 Пример использования:

#include <iostream>
#include <string_view>

void print(std::string_view str) {  // Без лишнего копирования
    std::cout << str << '\n';
}

int main() {
    std::string s = "Hello, world!";
    print(s);         // Можно передавать std::string
    print("Hi there"); // Можно передавать строковый литерал
}
🛠 Когда использовать? ✅ При передаче строк в функции, если их не нужно модифицировать. ✅ Для работы с подстроками (в отличие от std::string::substr, который делает копию). ✅ Для обработки строк без создания динамических объектов. ⚠️ Важно помнить: - std::string_view не владеет данными, поэтому нельзя использовать его для длительного хранения указателей на временные строки. - Нужно быть осторожным с объектами, чей срок жизни может закончиться, пока std::string_view ещё используется. 🚀 Итог: Использование std::string_view вместо const std::string& может ускорить работу с текстовыми данными и снизить нагрузку на аллокатор. Если не нужно изменять строку — это отличный выбор! А вы уже используете std::string_view в своих проектах? Делитесь в комментариях! ⬇️ #cpp #programming 👉 @cpp_lib