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

В языке С есть функции malloc, free и realloc. При использовании последней вы можете написать этакий расширяющийся массив из примитивных типов или структур (классов-то нет), который, можно надеяться, не будет копировать все данные при каждом расширении. В С++ есть встроенный класс vector, который представляет из себя расширяющийся массив, но он так не умеет: при каждом расширении вектора выделяется новый участок памяти и все элементы перемещаются на него (по возможности, с использованием move-семантики). Но ведь, если можно каждый раз не копировать все старые элементы на новое место, вектор должен работать быстрее? В этой статье я попробую написать вектор, который умеет расширяться без копирования элементов.

Сначала я покажу, что стандартный вектор не умеет расширяться без копирования/перемещения, потом обсужу придуманное решение, потом собственно приведу реализацию вектора, а в конце сравню производительность со стандартным вектором.

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

#cpp #programming

👉 @cpp_lib
👍6🥰1
Modern C++ (2021 Lecture & Tutorials)

Lecture 0: Course Introduction, Organization, Hello World (2021)
Hands-on Tutorial: Working with Linux (2021)
Lecture 1: Build Systems (2021)
Lecture 2: C++ Basic Syntax (2021)
Lecture 3: C++ Functions (2021)
Lecture 5: I/O & Filesystem
Hands-on Tutorial: OpenCV (2021)

Все видео доступны на youtube

#cpp #programming

👉 @cpp_lib
Лучшие способы преобразования перечисления в строку

https://belaycpp.com/2021/08/24/best-ways-to-convert-an-enum-to-a-string/

#cpp #programming

👉 @cpp_lib
👍4
Базовый курс C++ (MIPT, ILab)

1. Scent of C++.
2. Указатели и ссылки
3. Имена и сущности
4. Инициализация и копирование.
5. RAII и перемещение
6. Приведение типов
7. Перегрузка операторов
8. Наследование и полиморфизм
9. Множественное наследование
10. Языки и грамматики
11. Исключения
12. Безопасность исключений
13. Проектирование
14 (доп). OpenGL и Vulkan
15. Вычисления на GPU.
16. Специализация и инстанцирование.
17. Вывод типов и свёртка ссылок.
18. Определители типов и SFINAE
19. Вариабельные шаблоны.
20. Итераторы
21. LLVM, часть 1
22. LLVM, часть 2
23. Последовательные контейнеры.
24. Ассоциативные контейнеры
25. Алгоритмы и функторы.
26. Метапрограммирование.
27. Constexpr функции.
28. Концепты и напутственные слова.

Все видео доступны на youtube

#cpp #programming

👉 @cpp_lib
👍106
Примеры C++ кода до и после Ranges

Измените несортированный диапазон, чтобы он сохранял только уникальные значения, но в обратном порядке

👉 @cpp_lib
👍2
This media is not supported in your browser
VIEW IN TELEGRAM
Как написать 2D игру на C++ и чистом STL для терминала в Linux

Привет, Хабр, я PHP разработчик с опытом работы в продакшне более 8 лет. После долгого и упорного труда мне стало скучно пилить микросервисы и бэкенды в хайлоде, я решил постичь магию разработки игр. Выбрал курс по Unreal Engine 5 и C++, так как там все структурировано, понятно, и в случае необходимости есть кому задать вопрос. На первой лекции по основам С++ преподаватель сразу предложил челлендж - написать 2D игру без использования игрового движка. Идея мне понравилась и я сразу приступил к реализации.

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

👉 @cpp_lib
👍6
Подводные камни компараторов в С++

При использовании компаратора в алгоритмах boost::sort и std::sort важно учитывать некоторые особенности работы этих алгоритмов, игнорирование которых может привести к неожиданным последствиям, в том числе к segmentation fault.

https://habr.com/ru/company/kaspersky/blog/710916/

👉 @cpp_lib
👍6
Как измерить длину SSO-строки с помощью constinit и constexpr

В этом тексте вы узнаете о нескольких техниках и экспериментах с ключевыми словами constexpr и constinit. Исследуя реализацию строк, вы также увидите, почему constinit настолько мощный инструмент.

https://www.cppstories.com/2022/sso-cpp20-checks/

👉 @cpp_lib
👍2
Разработка стековой виртуальной машины и компилятора под неё

Решил в качестве хобби написать 32-bit стековую виртуальную машину и компилятор C подобного языка под неё, чтобы восстановить базовые навыки. Такая классическая Computer Science задачка для заполнения вечеров с пивом. Как предприниматель, я четко понимаю, что она никому не нужна, но такая практика нужна мне для эстетического инженерного удовольствия. Плюс когда об этом рассказываешь сам понимаешь глубже. С целью и мотивами определился. Начнём.

часть I
часть II
часть III
итог

👉 @cpp_lib
👍11🤯1
Сборщик мусора на С++

Эту статью я задумал довольно давно. Речь в ней пойдет о простейшем копирующем сборщике мусора на С++. У него довольно много ограничений (часть не мешает, часть можно обойти, если задаться целью написать какую-то серьезную библиотеку, а для кое-чего неплохо было бы заиметь зачаточную поддержку от языка), зато и кода в нем чуть больше 100 строк. Заинтересовавшихся прошу под кат. Там минимум ООП, простейшие шаблоны и жуткие магические ритуалы с указателями.

Начнем с начала. Что такое сборщик мусора и для чего он нужен?

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

👉 @cpp_lib
👍4🥰1
Серия статей

Геометрические фигуры мультимедийной библиотеки SFML для разработки игр на C++
https://habr.com/ru/post/701224/

2D примитивы мультимедийной библиотеки SFML для разработки игр на C++
https://habr.com/ru/post/702128/

Электронные часы, мультимедийная библиотека SFML для разработки игр на C++
https://habr.com/ru/post/704956/

Аналоговые часы SFML C++
https://habr.com/ru/post/706954/

Игровое меню SFML C++
https://habr.com/ru/post/710100/

👉 @cpp_lib
👍6