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

Форматирование текста на C++ можно реализовать несколькими способами:

потоками ввода-вывода. В частности, через std::stringstream с помощью потоковых операций (таких как operator <<);
функциями printf, в частности sprintf;
с помощью библиотеки форматирования C++20, в частности std::format / std::format_to;
с помощью сторонней библиотеки, в частности {fmt} (основа новой стандартной библиотеки форматирования).

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

Rus https://habr.com/ru/companies/ruvds/articles/761910/

Eng https://mariusbancila.ro/blog/2023/09/12/formatting-text-in-c-the-old-and-the-new-ways/

#cpp #programming

👉 @cpp_lib
👍3
Собираем и запускаем калькулятор из Windows XP в среде Windows 10 c помощью GCC x64

Дисклеймер
Все действия, описанные автором в статье, сделаны исключительно в исследовательских и образовательных целях. Windows является зарегистрированным товарным знаком Microsoft.

Введение

В 2020 году мир облетела новость о сливе исходников Windows XP и Windows Server 2003 на 4Chan. После этого код широко разошелся по интернету, включая GitHub, который принадлежит Microsoft. Последняя, естественно, сразу начала принимать меры по блокировке кода, многие сайты и репозитории были удалены из поиска.

Каков же статус ситуации на 2023 год? Как ни парадоксально, исходники все еще можно найти на GitHub и клонировать без особых проблем. Тщательно поискав, можно найти инструкции и видео, как все собрать инструментами, которые идут в комплекте с исходниками системы.

Среди всех ОС от Microsoft, Windows XP является одной из самых моих любимых ОС. Она весьма быстрая, легковесная, но в тоже время интерфейс достаточно удобен для работы. По этим причинам, а также будучи разработчиком C и С++, мне было весьма интересно исследовать код данной ОС.

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

#cpp #programming

👉 @cpp_lib
👍4
Fibers в C++: основы

Fibers (волокна) менее узнаваемая концепция по сравнению с coroutines (сопрограммами), является довольно мощным дополнением к кооперативной многозадачности. Как графический программист в игровой индустрии, я ценю большую гибкость, которую дают волокна. Я считаю, что эта технология немного недооценена из-за отсутствия достаточного количества общедоступных материалов.

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

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

#cpp #programming

👉 @cpp_lib
👍6
This media is not supported in your browser
VIEW IN TELEGRAM
Визуализация алгоритмов стандартной библиотеки C++

В интернете много различных видео, в которых визуализируются алгоритмы. Как правило, такая визуализация делается под определенный алгоритм, и код отрисовки соединен с кодом самого алгоритма. Мне пришла идея отделить визуализацию алгоритма от его исполнения. Тогда можно будет визуализировать любой алгоритм. В том числе алгоритмы стандартной библиотеки С++. Я нашёл способ сделать это, и вот что у меня получилось.

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

#cpp #programming

👉 @cpp_lib
👍2
Media is too big
VIEW IN TELEGRAM
(Жизненный) cовет от создателя C++

Создатель C++, Бьёрн Страуструп, делится ценными жизненными советами, которыми, скажем прямо, могли бы воспользоваться все разработчики, независимо от их многолетнего опыта. По словам Бьерна, «вы не можете просто писать код», вам нужно развивать больше навыков, если вы хотите стать всесторонним успешным разработчиком. Посмотрите это неизданное интервью, если вы хотите получить вдохновение и рекомендации на своем пути разработчика от одного из OG.

источник

#cpp #programming

👉 @cpp_lib
👍12
SFINAE, непосредственный контекст, оператор << и '\n'

В этой статье я покажу и объясню странную на вид ошибку, связанную с tuple_size_v и инстанцированием для символа \n. Вы увидите некоторые хитрые места в SFINAE и то, как компилятор строит набор разрешений перегрузки.

https://www.cppstories.com/2022/sfinea-immediate-context/

#cpp #programming

👉 @cpp_lib
👍1
20 небольших, но полезных функций C++20

С++20 - это огромный и многофункциональный продукт. Вот лишь некоторые из них: Modules, Coroutines, Concepts, Ranges, Calendar & Timezone, Formatting library.

Но, как вы понимаете, это еще не все.

В зависимости от того, как считать, в C++20 появилось около 80 библиотечных функций и 70 изменений в языке, так что есть о чем рассказать :)

В этой статье я покажу вам 20 небольших возможностей C++20, которые очень удобно и полезно знать. Десять элементов языка и еще десять для стандартной библиотеки. Большинство из них сопровождаются интересным примером.

https://www.cppstories.com/2022/20-smaller-cpp20-features/

#cpp #programming

👉 @cpp_lib
👍3
Оптимизация GUI на Qt

Как правило, при создании desktop-приложений на платформе Qt не возникает проблем, связанных с медленностью работы GUI. Qt – платформа достаточно надежная, неплохо вылизанная по всем параметрам, в том числе и по скорости работы. Однако всё же иногда бывают ситуации, когда из-за обилия виджетов графический интерфейс немного притормаживает, и это печально). В этой статье я приведу один частный пример простого графического интерфейса и покажу, как за два шага можно сначала ускорить его в 11 раз, а потом и в целых 34 раза. Вдобавок к этому, я постараюсь немного осветить механизм принятия решения для таких оптимизационных задач, постараюсь показать направление мыслей для правильного решения. Поехали!

https://habr.com/ru/post/672962/

#cpp #programming

👉 @cpp_lib
👍4
Правка чужого кода

Для одного проекта мне понадобился просмотрщик памяти в DOS. В идеале хотелось бы иметь редактор памяти, чтобы в нём был поиск по ключевым словам, перемещение к заданному адресу. Но для старта мне было бы достаточно хотя бы возможность просмотра всего мегабайта доступной «нижней» памяти.

https://habr.com/ru/company/timeweb/blog/697688/

#cpp #programming

👉 @cpp_lib
👍2
std::atomic_thread_fence

std::atomic_thread_fence — это функция, которая устанавливает порядок синхронизации памяти для не атомарных и расслабленных атомарных доступов, как указано в аргументе order, без связанной атомарной операции.

std::atomic_thread_fence может использоваться для обеспечения правильного порядка чтения и записи в многопоточных программах.

В этом примере два потока выполняют функции write_x_then_y и read_y_then_x:

- write_x_then_y устанавливает значение атомарной переменной x равным 1, затем вызывает std::atomic_thread_fence с аргументом std::memory_order_release и устанавливает значение атомарной переменной y равным 1.

- read_y_then_x считывает значение атомарной переменной y, затем вызывает std::atomic_thread_fence с аргументом std::memory_order_acquire и считывает значение атомарной переменной x.

#cpp #programming

👉 @cpp_lib
👍4
Media is too big
VIEW IN TELEGRAM
Привет 🖐

За несколько дней мои матрицы координально изменились, в момент написания предыдущего поста, матрицы поддерживались лишь стандартом С++20 и выше, на данный момент библиотека настроена и собирается на С++11 С++14 С++17 С++20 С++23

Была пофикшена куча багов, как неочевидных с итераторами, так и простых опечаток.

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

Как раз для этого я создал шаблон cmake проекта MTL (Matrix Template Library) с настроенными зависимости и подтягиванием исходников.

Шаблон можно скачать и попробовать по ссылке, все инструкции того, как настроить проект под себя есть в README .md

#cpp #programming

👉 @cpp_lib
👍3
Управление зависимостями с помощью Meson + WrapDB

В одной из недавних статей в блоге рассказывалось о том, как собирать и управлять зависимостями с помощью CMake и FetchContent. В качестве примера использовалось простое GUI-приложение, использующее мультимедийные библиотеки SFML и инструментарий виджетов Dear ImGui с использованием соответствующей библиотеки-обертки. Для сравнения проделаем то же самое с Meson.

FetchContent_Declare(
sfml
URL https://github.com/SFML/SFML/archive/refs/tags/2.5.1.zip
URL_MD5 2c4438b3e5b2d81a6e626ecf72bf75be
)
add_subdirectory(sfml)


https://nibblestew.blogspot.com/2021/05/managing-dependencies-with-meson-wrapdb.html


#cpp #programming

👉 @cpp_lib
👍1
Минимально жизнеспособный декларативный графический интерфейс на языке C++

https://ossia.io/posts/minimum-viable/

#cpp #programming

👉 @cpp_lib
👍3
Изучайте C++: Введение для начинающих

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

https://dev.to/godot/learn-c-an-introduction-for-beginners-2m06

#cpp #programming

👉 @cpp_lib
👍3