О том, как легкомысленное использование полиморфных аллокаторов может испортить вам жизнь
Вы хотите идти в ногу со временем и перевести ваш проект на полиморфные аллокаторы? Вас не могут отговорить от этого даже затраты на виртуальные вызовы? Тогда вы просто обязаны знать о нюансах с лайфтаймом, и почему нельзя просто взять и поменять свои контейнеры на аналоги из пространства имён pmr.
Давайте предположим для примера, что вы работаете в биологической лаборатории. Вам поставили задачу разработать приложение, которое позволяло бы симулировать жизненный цикл каких-нибудь бактерий. Соответственно, у вас в проекте есть класс, описывающий бактерию. При этом каждой бактерии принадлежит набор генов. Это могло бы выглядеть следующим образом:
https://habr.com/ru/companies/pvs-studio/articles/875922/
#cpp #programming
👉 @cpp_lib
Вы хотите идти в ногу со временем и перевести ваш проект на полиморфные аллокаторы? Вас не могут отговорить от этого даже затраты на виртуальные вызовы? Тогда вы просто обязаны знать о нюансах с лайфтаймом, и почему нельзя просто взять и поменять свои контейнеры на аналоги из пространства имён pmr.
Давайте предположим для примера, что вы работаете в биологической лаборатории. Вам поставили задачу разработать приложение, которое позволяло бы симулировать жизненный цикл каких-нибудь бактерий. Соответственно, у вас в проекте есть класс, описывающий бактерию. При этом каждой бактерии принадлежит набор генов. Это могло бы выглядеть следующим образом:
class Bacteria
{
private:
using gene_type = TheGene;
using genes_container = std::vector<gene_type>;
private:
static genes_container RandomGenes();
public:
Bacteria() = default;
Bacteria(const Bacteria&) = default;
Bacteria(Bacteria&&) = default;
Bacteria& operator = (const Bacteria&) = default;
Bacteria& operator = (Bacteria&&) = default;
~Bacteria() = default;
public:
void MutateRandomGene();
Bacteria Clone() const;
/* something else ... */
private:
genes_container m_genes = RandomGenes();
};
https://habr.com/ru/companies/pvs-studio/articles/875922/
#cpp #programming
👉 @cpp_lib
⚡️Асинхронность без сложных потоков? В C++20 это возможно. Корутины позволяют выполнять задачи параллельно без создания лишних потоков, экономя ресурсы и упрощая код.
На открытом вебинаре 27 марта в 20:00 мск разберём, как co_await и co_yield работают в современных C++-проектах, где применяются в реальных задачах и почему это важно для высоконагруженных систем. Разберём практические примеры из сетевого программирования и обработки данных.
Освойте новую парадигму асинхронности, избавьтесь от проблем с потоками и сделайте свой код проще и быстрее. Вы научитесь внедрять корутины в свои проекты, разберётесь в новшествах C++20/23 и сможете использовать их в продакшене.
👉Регистрируйтесь и получите скидку на большое обучение «C++ Developer. Professional»: https://vk.cc/cK8je9
На открытом вебинаре 27 марта в 20:00 мск разберём, как co_await и co_yield работают в современных C++-проектах, где применяются в реальных задачах и почему это важно для высоконагруженных систем. Разберём практические примеры из сетевого программирования и обработки данных.
Освойте новую парадигму асинхронности, избавьтесь от проблем с потоками и сделайте свой код проще и быстрее. Вы научитесь внедрять корутины в свои проекты, разберётесь в новшествах C++20/23 и сможете использовать их в продакшене.
👉Регистрируйтесь и получите скидку на большое обучение «C++ Developer. Professional»: https://vk.cc/cK8je9
Реклама. ООО «Отус онлайн-образование», ОГРН 1177746618576
Шеф, всё пропало
Ошибки программистов C++ — это отдельный вид искусства, вроде бы простой язык, но стоит отвлечься на чашечку кофе, как компилятор начинает вываливать простыню ворнингов пополам с ошибками, и иногда это больше похоже на древнеегипетские письмена, чем на нормальный выхлоп. Вы наверное и сами не раз сталкивались с разыменованием nullptr или перепутали (= и ==) по недосмотру. Часто причиной ошибкой является лень или невнимательность, или усталость - не зря появились суеверия "не комитить в пятницу вечером", "не кодить в состоянии изменного сознания" или "избегать кода под кофейным угаром", ну это когда три-четыре кружечки кофе навернул и пошел нести добрый код направо и налево.
https://habr.com/ru/articles/848662/
#cpp #programming
👉 @cpp_lib
Ошибки программистов C++ — это отдельный вид искусства, вроде бы простой язык, но стоит отвлечься на чашечку кофе, как компилятор начинает вываливать простыню ворнингов пополам с ошибками, и иногда это больше похоже на древнеегипетские письмена, чем на нормальный выхлоп. Вы наверное и сами не раз сталкивались с разыменованием nullptr или перепутали (= и ==) по недосмотру. Часто причиной ошибкой является лень или невнимательность, или усталость - не зря появились суеверия "не комитить в пятницу вечером", "не кодить в состоянии изменного сознания" или "избегать кода под кофейным угаром", ну это когда три-четыре кружечки кофе навернул и пошел нести добрый код направо и налево.
https://habr.com/ru/articles/848662/
#cpp #programming
👉 @cpp_lib
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 #programming
👉 @cpp_lib
Привет, Хабр, я PHP разработчик с опытом работы в продакшне более 8 лет. После долгого и упорного труда мне стало скучно пилить микросервисы и бэкенды в хайлоде, я решил постичь магию разработки игр. Выбрал курс по Unreal Engine 5 и C++, так как там все структурировано, понятно, и в случае необходимости есть кому задать вопрос. На первой лекции по основам С++ преподаватель сразу предложил челлендж - написать 2D игру без использования игрового движка. Идея мне понравилась и я сразу приступил к реализации.
https://habr.com/ru/post/708486/
#cpp #programming
👉 @cpp_lib
👨💻 Если вы хотите основательно изучить C++, ресурс LearnCpp — один из лучших бесплатных онлайн-курсов по современному C++.
Сайт охватывает:
- Основы языка (переменные, типы данных, управление потоком, функции)
- Указатели, ссылки и динамическое выделение памяти
- Работа с массивами, строками и контейнерами STL
- ООП: классы, наследование, полиморфизм, инкапсуляция
- Современные фичи C++11/14/17/20: smart pointers, lambdas, auto, ranged for, structured bindings
- Обработка исключений
- Пространства имён, шаблоны, перегрузка операторов
- Управление ресурсами (RAII)
- Работа с файлами
- Продвинутые темы: многопоточность, move-семантика, constexpr и др.
Все главы структурированы в логическом порядке, с практическими примерами, пояснениями и заданиями. Сайт постоянно обновляется, чтобы соответствовать актуальным стандартам языка.
📚 Отличный выбор для как новичков, так и опытных разработчиков, желающих освежить знания по современному C++.
https://www.learncpp.com/
#cpp #programming
👉 @cpp_lib
Сайт охватывает:
- Основы языка (переменные, типы данных, управление потоком, функции)
- Указатели, ссылки и динамическое выделение памяти
- Работа с массивами, строками и контейнерами STL
- ООП: классы, наследование, полиморфизм, инкапсуляция
- Современные фичи C++11/14/17/20: smart pointers, lambdas, auto, ranged for, structured bindings
- Обработка исключений
- Пространства имён, шаблоны, перегрузка операторов
- Управление ресурсами (RAII)
- Работа с файлами
- Продвинутые темы: многопоточность, move-семантика, constexpr и др.
Все главы структурированы в логическом порядке, с практическими примерами, пояснениями и заданиями. Сайт постоянно обновляется, чтобы соответствовать актуальным стандартам языка.
📚 Отличный выбор для как новичков, так и опытных разработчиков, желающих освежить знания по современному C++.
https://www.learncpp.com/
#cpp #programming
👉 @cpp_lib
👩💻 Тест по языку С
Проверь насколько хорошо ты знаешь Си !
Ответишь — пройдешь на продвинутый курс «Программист С» от OTUS по специальной цене.
⏱ Время прохождения теста ограничено 30 минут
➡️ ПРОЙТИ ТЕСТ
На курсе ты освоишь практические навыки программирования на С, научишься решать задачи уровня Middle+.
Курс доступен в рассрочку.
🎁 Скидки в честь Дня Рождения Otus и дополнительный промокод на скидку PROGC_5 (до 31.03)
Реклама. ООО «Отус онлайн-образование», ОГРН 1177746618576
Проверь насколько хорошо ты знаешь Си !
Ответишь — пройдешь на продвинутый курс «Программист С» от OTUS по специальной цене.
На курсе ты освоишь практические навыки программирования на С, научишься решать задачи уровня Middle+.
Курс доступен в рассрочку.
Реклама. ООО «Отус онлайн-образование», ОГРН 1177746618576
Please open Telegram to view this post
VIEW IN TELEGRAM
Media is too big
VIEW IN TELEGRAM
Media is too big
VIEW IN TELEGRAM
This media is not supported in your browser
VIEW IN TELEGRAM
This media is not supported in your browser
VIEW IN TELEGRAM
This media is not supported in your browser
VIEW IN TELEGRAM
This media is not supported in your browser
VIEW IN TELEGRAM
This media is not supported in your browser
VIEW IN TELEGRAM
This media is not supported in your browser
VIEW IN TELEGRAM
This media is not supported in your browser
VIEW IN TELEGRAM
Алгоритмы на С/С++
Задача о Ханойской башне
Быстрая сортировка (quick sort)
Бинарный поиск в отсортированном массиве
Сортировка методом выбора
Сортировка методом пузырька
Минимизация просмотров в методе сортировки пузырьком
Модифицированный метод пузырька
Сортировка методом вставок
Шейкер - сортировка
источник
#cpp #programming
👉 @cpp_lib
Задача о Ханойской башне
Быстрая сортировка (quick sort)
Бинарный поиск в отсортированном массиве
Сортировка методом выбора
Сортировка методом пузырька
Минимизация просмотров в методе сортировки пузырьком
Модифицированный метод пузырька
Сортировка методом вставок
Шейкер - сортировка
источник
#cpp #programming
👉 @cpp_lib
Media is too big
VIEW IN TELEGRAM
Media is too big
VIEW IN TELEGRAM
Media is too big
VIEW IN TELEGRAM
Media is too big
VIEW IN TELEGRAM
Media is too big
VIEW IN TELEGRAM
This media is not supported in your browser
VIEW IN TELEGRAM
Media is too big
VIEW IN TELEGRAM
Media is too big
VIEW IN TELEGRAM
Media is too big
VIEW IN TELEGRAM
Media is too big
VIEW IN TELEGRAM
Основы С++
C++. Урок 1. Введение
C++. Урок 2. Обзор редактора
C++. Урок 3. Процедурный стиль программирования
C++. Урок 4. Динамическая память
C++. Урок 5. Отличия С и C++
C++. Урок 6. ООП. Инкапсуляция классов
С++. Урок 7. Наследование + статический полиморфизм
C++. Урок 8. Динамический полиморфизм
C++. Урок 9. Классификация полиморфизма
C++. Урок 10. Обработка исключений
#cpp #programming
👉 @cpp_lib
C++. Урок 1. Введение
C++. Урок 2. Обзор редактора
C++. Урок 3. Процедурный стиль программирования
C++. Урок 4. Динамическая память
C++. Урок 5. Отличия С и C++
C++. Урок 6. ООП. Инкапсуляция классов
С++. Урок 7. Наследование + статический полиморфизм
C++. Урок 8. Динамический полиморфизм
C++. Урок 9. Классификация полиморфизма
C++. Урок 10. Обработка исключений
#cpp #programming
👉 @cpp_lib