Библиотека C/C++ разработчика
6.81K subscribers
655 photos
690 videos
8 files
940 links
Полезные материалы по всему, что может быть полезно плюсовику/сишнику. По всем вопросам @evgenycarter
Download Telegram
Юрий Грибов — Как правильно писать компараторы

Один из малоизвестных примеров undefined behavior в C/C++ это нарушение требований к функциям сравнения (компараторам). Компараторы широко используются в алгоритмах (std::sort, std::binary_search, и т.д.) и контейнерах (std::set, std::map) и встречаются как в C++, так и в C (qsort, bsearch). Компараторы должны удовлетворять некоторым аксиомам, которые в математике описываются понятием строгого слабого порядка (strict weak ordering). Эти аксиомы не интуитивны и в них легко ошибиться, о чем свидетельствует большое количество соответствующих багов в open source проектах. Современные тулчейны предоставляют средства для отслеживания таких ошибок. О них рассказано в докладе Юрия.

https://www.youtube.com/watch?v=NKn1pAoB2MM

#cpp #programming

👉 @cpp_lib
2👍1
Можно ли изменить состояние в const function в C++? Почему? Как?

В этом посте мы обсудим, почему вы можете захотеть изменить состояние в const-функции в C++, и как можно изменить состояние с помощью const_cast. Мы также обсудим, является ли использование const_cast в кодовых базах C++ хорошей практикой.

https://bytesandlogs.me/can-you-change-state-in-const-function-in-cpp/

#cpp #programming

👉 @cpp_lib
👍4🤣2🤷‍♂1
Media is too big
VIEW IN TELEGRAM
Как вставить ASM в Си (inline asm)

источник

#cpp #programming

👉 @cpp_lib
👍3🔥3🤡211
I HAVE NO CONSTRUCTOR, AND I MUST INITIALIZE

Когда несколько лет назад я проходил первый курс по C++, меня учили, что при определенных обстоятельствах компилятор будет предоставлять некие конструкторы по умолчанию на случай, если мы не предоставим свои собственные. Любопытно было узнать больше, но в первую очередь меня интересовали такие случаи:

struct T { /* ... */ };

T t;
T s{};
T r{arg1, arg2, ...};


https://consteval.ca/2024/07/03/initialization/

#cpp #programming

👉 @cpp_lib
👍3
Хотите узнать, какой алгоритм сортировки быстрее и эффективнее? Присоединяйтесь к нашему открытому уроку!

Тема: Визуальное сравнение 4-5 алгоритмов сортировок.
Дата: 15 июля в 20:00 мск.

На занятии мы подробно рассмотрим два популярных алгоритма сортировки: Выбором и Пирамидальной. Разберём их по различным критериям, включая сложность, количество обменов, стабильность и адаптивность.

Мы напишем и сравним алгоритмы по их быстродействию. Этот урок идеально подходит для студентов, разработчиков и всех, кто хочет углубить свои знания в области алгоритмов сортировки.

🔥 Спикер Евгений Волосатов — программист баз данных и преподаватель с огромным и разнообразным опытом, автор статей и учебных программ по C#, Java, PHP.

🔴 Пройдите короткий тест прямо сейчас, чтобы посетить бесплатный урок: https://vk.cc/cyflwx

Реклама. ООО «Отус онлайн-образование», ОГРН 1177746618576
👍1
📕Introduction to C++ : 500+ Difficulty-Scaled Solved Programming Exercises.
George S. Tselikis (2023)

Эта книга предназначена в первую очередь для студентов, изучающих курс языка C++, для тех, кто хочет самостоятельно изучить язык C++, а также для программистов, имеющих опыт работы с C и желающих перейти на C++. Она также может оказаться полезной преподавателям курса С++, которые ищут поясняющие примеры программирования для добавления в свои лекции. Основное внимание в этой книге уделено прочному введению в язык C++ и знаниям программирования с помощью большого количества практических примеров и содержательных советов. Она включает более 500 упражнений и примеров постепенного усложнения, чтобы помочь читателю понять принципы C++ и увидеть, как концепции могут материализоваться в коде.

#cpp #programming

👉 @cpp_lib
👍7🥰32🔥1
Media is too big
VIEW IN TELEGRAM
Константин Владимиров — О денотации: разрешение имен и его пересмотр в C++23

Этот доклад — попытка сделать темную и мрачную область разрешения имен в C++ простой и ясной для практикующего программиста.

источник

#cpp #programming

👉 @cpp_lib
👍5🤷‍♂2
This media is not supported in your browser
VIEW IN TELEGRAM
FTXUI

Простая кроссплатформенная библиотека C++ для пользовательских интерфейсов на базе терминала!

• Функциональный стиль
• Простой и элегантный синтаксис
• Создаваемые консольные UI поддерживают навигацию с помощью клавиатуры и мыши
• Поддержка UTF8
• Поддержка анимации
• Поддержка рисования
• Нет зависимостей
• Кроссплатформенность: Linux/MacOS, WebAssembly, Windows


https://github.com/ArthurSonzogni/FTXUI

#cpp #programming

👉 @cpp_lib
👍12😁32
CGAL

Библиотека алгоритмов вычислительной геометрии (CGAL) - это библиотека C++, цель которой - обеспечить легкий доступ к эффективным и надежным алгоритмам вычислительной геометрии.

https://github.com/CGAL/cgal

#cpp #programming

👉 @cpp_lib
👍7
Библеотека CPR

C++ Requests - это простая обертка вокруг libcurl, вдохновленная отличным проектом Python Requests.

Несмотря на свое название, простой интерфейс libcurl - это еще не все, и ошибки, неправильное использование этого языка - частый источник ошибок и разочарований. Используя более выразительные языковые средства C++17 (или C++11, если вы используете cpr < 1.10.0), эта библиотека укладывает суть выполнения сетевых вызовов в несколько лаконичных идиом.

Вот быстрый GET-запрос:

#include <cpr/cpr.h>

int main(int argc, char** argv) {
cpr::Response r = cpr::Get(cpr::Url{"https://api.github.com/repos/whoshuu/cpr/contributors"},
cpr::Authentication{"user", "pass", cpr::AuthMode::BASIC},
cpr::Parameters{{"anon", "true"}, {"key", "value"}});
r.status_code; // 200
r.header["content-type"]; // application/json; charset=utf-8
r.text; // JSON text string
return 0;
}

https://github.com/libcpr/cpr

#cpp #programming

👉 @cpp_lib
👍11
Media is too big
VIEW IN TELEGRAM
Безопасное копирование, перемещение и уничтожение объектов в современном C++ по правилу «все или ничего»

Какие конструкторы нужны классу C++? Какие он генерирует сам? Как насчет различных операторов присваивания? А деструктор? Как не отстрелить себе ногу и без труда ориентироваться в этих водах?

Это и многое другое мы рассмотрим в этом видео, которое расскажет нам о простом правиле, которому нужно следовать при реализации классов в современном C++, - правиле "все или ничего". Мы погрузимся в причины его существования и посмотрим, как оно облегчает нам жизнь.

источник

#cpp #programming

👉 @cpp_lib
👍3🤷‍♂1
Как malloc сломала JPGLoader в Serenity, или Как выиграть в лотерее

Пару лет назад мне выпала возможность расследовать в SerenityOS интересный баг, связанный с декодированием изображений JPG, которые по какой-то причине при просмотре выглядели так, как вы видите выше.

Странно, не так ли? Похоже, будто просто перепутали RGB и BGR. При этом внесение в JPGLoader.cpp следующего изменения:

- const Color color { (u8)block.y[pixel_index], (u8)block.cb[pixel_index], (u8)block.cr[pixel_index] };
+ const Color color { (u8)block.cr[pixel_index], (u8)block.cb[pixel_index], (u8)block.y[pixel_index] };
context.bitmap->set_pixel(x, y, color);


https://habr.com/ru/companies/ruvds/articles/828224/

original https://sin-ack.github.io/posts/jpg-loader-bork/

#cpp #programming

👉 @cpp_lib
🔥7👍1
Структуры и классы в C++ и D

Реализации объектно-ориентированного программирования в разных Си-подобных языках, конечно, похожи, и все такие языки, созданные после C++, пытаются сделать ООП более удобно используемым. Сравним в этой статье ООП в D и С++.

Структуры и классы в C++ — это фактически одно и то же (хотя на практике используются по-разному), но в D есть явная семантическая разница. Структуры в D в основном предназначены для простой инкапсуляции данных и функций в единой сущности. Наследовать структуры нельзя, а память под структуры чаще всего выделяется на стеке. Классы же можно наследовать друг от друга, а объекты классов выделяются (почти всегда) в куче, контролируемой сборщиком мусора.

https://habr.com/ru/articles/827240/

#cpp #programming

👉 @cpp_lib
👍3
📕C++20 Get the Details
Grimm Rainer (2022)

В этой книге подробно рассказывается о новом стандарте С++20. Для тех, кто не знаком с С++20, приводится краткий обзор, далее рассматриваются ключевые возможности языка. Вы получите представление о ключевых изменениях в ядре языка (концепты и модули), новой библиотеке диапазонов, корутинах, а затем сможете применить теорию на практике, изучив ряд примеров. Книгу можно использовать как справочное руководство и изучать главы в удобном для вас порядке.
Издание будет полезно разработчикам, желающим освоить последнюю версию С++, изучить передовые возможности и добавления в язык, а также заглянуть за кулисы разработки новых стандартов языка и узнать, как предлагаются, обсуждаются и утверждаются новые изменения в стандарт С++ и чем вызваны эти изменения.

#cpp #programming

👉 @cpp_lib
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥7👍2
Разработка интерфейса для Windows — это боль

Последние несколько дней я пытался найти библиотеку, которая бы позволила мне писать на C++ программы с GUI. Мои требования были довольно просты:

Достаточно только поддержки Windows;

Разрешено коммерческое использование;

Простая стилизация, в том числе и тёмный режим;

Результатом должен быть единый файл .exe размером меньше 40 МБ без или с минимальным количеством зависимостей;

Написание части программы с GUI не должно занимать больше времени, чем сама функциональность.

https://tulach.cc/writing-gui-apps-for-windows-is-painful/

#cpp #programming

👉 @cpp_lib
72👍1🔥1🤔1🤷1
Media is too big
VIEW IN TELEGRAM
Плывущий экран. Вирус на C++. Melting Screen

Программа предоставлена в образовательных целях! Автор не несёт ответственности за её использование!
В этом видео вы узнаете как написать вирус на с++ который заставляет экран сыпаться и плыть.

источник

#cpp #programming

👉 @cpp_lib
👍9🔥1
Как выстрелить себе в ногу в C и C++. Сборник рецептов Haiku OS

История встречи статического анализатора PVS-Studio с кодом операционной системы Haiku уходит в далёкий 2015-й год. Это был интереснейший эксперимент и полезный опыт для команд обоих проектов. Почему эксперимент? Анализатора для Linux тогда не было и не будет ещё полтора года. Но труды энтузиастов нашей команды были вознаграждены: мы познакомились с разработчиками Haiku и повысили качество кода, пополнили базу редкими ошибками программистов и доработали анализатор. Сейчас проверить код Haiku на наличие ошибок можно легко и быстро.

https://habr.com/ru/companies/pvs-studio/articles/461255/

#cpp #programming

👉 @cpp_lib
👍1
Основы программирования на С/C++

Что такое IDE?
Почему стоит изучать С++?
Работа в Visual Studio C++ #1
Первая программа на С++
#5 Escape последовательности и Raw-строки в C++
Основные понятия языка С++
Представление чисел в памяти компьютера
Переменные и типы данных в С++
Локальные и глобальные переменные
Литералы
Потоковый ввод вывод в С++
.
.
.
Стек вызовов
Перегрузка и шаблоны функций в С++
Хвостовой возвращаемый тип в С++
Параметры по умолчанию в функции С/С++
Рекурсивные алгоритмы на языке С++
Указатель на функцию в языке С++
Динамическая память в языке С
Динамическая память в языке C++
Пример задачи на работу с динамической памятью в С++
Двумерный динамический массивна Еськова. Основы программирования

Доступно 56 видео

#cpp #programming

👉 @cpp_lib
👍81