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

Урок 01 - Первая программа, вывод на экран, пространство имен.
Урок 02 - Классы, первое знакомство. ООП. Инкапсуляция.
Урок 03 - Конструктор и деструктор.
Урок 04 - Пишем игру змейка для двух игроков.
Урок 05 - Операторы New и Delete
Урок 06 - ДЗ уроков 2, 3 и 5. Делаем зарядку.
Урок 07 - Простейший ИИ для игры змейка.
Урок 08 - Ввод с клавиатуры. Поток cin.
Урок 09 - Ссылки
Урок 10 - Перегрузка функций, конструктор копий, параметры по умолчанию

Всего доступно 27 уроков на youtube

#cpp #programming

👉 @cpp_lib
👍5
Media is too big
VIEW IN TELEGRAM
Почему я программирую на С/C++ (язык для профессионалов!)

В этом замечательном видео мы поговорим о том как появился на свет такой язык программирования как C++, почему его вообще решил создать Бьерн Страуструп, и.т.д. Кто не знает то,
C++ это язык программирования высокого уровня, на нём можно писать как простые, так и очень сложные программы. Этот язык известен своею очень и очень хорошей скоростью компилируемых им программ. На нём делают игры и высокопроизводительные программы.
А также используют в системах управления в : адронных коллайдерах, самолётах, ракетах, и.т.д!

Но как говорится у всего есть свои плюсы и минусы, и С++ в этом случае не является исключением. И в этом видеоролике я вам расскажу в чём плюсы и минусы это языка программирования!
А так же я поведаю свою историю, как и почему я начал программировать на C++. Какой путь мне пришлось пройти!

Какие подводные камни были на пути изучения C++! Типа довольно сложного синтаксис и контроля над памятью который почти полностью предоставлен самому разработчику!

источник

#cpp #programming

👉 @cpp_lib
👍3😱1
Пять продвинутых техник инициализации в C++: От reserve() до piecewise_construct

От операций с динамическими контейнерами до констант времени компиляции — C++ предлагает много интересных техник (как в этом знаменитом меме :)). В этой статье мы рассмотрим несколько продвинутых методов инициализации: от reserve() и emplace_back для контейнеров, до piecewise_construct и forward_as_tuple для кортежей. Благодаря этим техникам мы можем уменьшить количество временных объектов и более эффективно создавать переменные.

https://www.cppstories.com/2023/five-adv-init-techniques-cpp/

#cpp #programming

👉 @cpp_lib
👍3
Рабочие контракты: высокопроизводительная асинхронная система управления задачами без блокировок

Много лет назад я придумал методику управления асинхронными задачами, которая, насколько мне известно, сильно отличалась и продолжает отличаться от существующих подходов. Типичный подход заключается в том, что задачи помещаются в очередь и выполняются, как только они попадают в начало очереди. В общем случае желательно, чтобы множество потоков потребляли задания из очереди одновременно, что позволяет выполнять несколько заданий либо параллельно, либо на разных процессорах. Для повышения эффективности очередь обычно имеет форму многопотоковой очереди (MPMC Queue) и, как правило, представляет собой конструкцию без блокировок, что позволяет повысить пропускную способность за счет снижения накладных расходов на синхронизацию доступа к очереди при выполнении операций push/pop. Создание эффективной очереди MPMC без блокировок - задача нетривиальная и может быть чревата возникновением тонких условий гонки, если она не реализована со строгим вниманием к деталям. К счастью, существует множество реализаций MPMC-очередей без блокировок, которые широко доступны. Некоторые из них более эффективны, чем другие, и у каждой есть свои недостатки и компромиссы, такие как снижение пропускной способности при сильной конкуренции, слабое упорядочивание (задачи могут быть потреблены в порядке, отличном от того, в котором они были произведены), очереди с фиксированной емкостью, очереди с динамической емкостью и т.д.

https://www.buildingcpp.com/work_contract.htm

#cpp #programming

👉 @cpp_lib
👍3
Форматирование текста на 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