C/C++ Ready | Программирование
описание
Авторский канал по разработке на C и C++. Ресурсы, гайды, задачи, шпаргалки. Информация ежедневно пополняется! Автор: @energy_c РКН: https://clck.ru/3QREHc Реклама на бирже: https://telega.in/c/cpp_ready
Лучшие посты
за три месяцабез подписи
Напоминалка по std::string_view в C++! Например, std::string_view позволяет передать строку без копирования, если функции нужно только прочитать текст. На картинке шпаргалка по string_view: создание, доступ к символам, получение подстроки, сравнение и важные ограничения по времени жизни данных. Сохрани, чтобы не потерять! 📣 C++ Ready | #ресурс
Удаляем элементы из vector по условию в C++20! Допустим, есть список чисел, и нужно удалить все чётные значения. std::vector<int> nums = {1, 2, 3, 4, 5}; Раньше для такой задачи часто использовали erase-remove idiom: nums.erase( std::remove_if(nums.begin(), nums.end(), [](int x) { return x % 2 == 0; }), nums.end() ); Код рабочий, но выглядит тяжеловато, особенно для простой операции. В C++20 появился более прямой вариант: std::erase_if(nums, [](int x) { return x % 2 == 0; }); Функция удалит все элементы, для которых predicate вернёт true. После выполнения в векторе останется: 1 3 5 Так можно удалять не только числа, но и объекты. Например, убрать неактивных пользователей: std::erase_if(users, [](const User& user) { return !user.active; }); Это удобно для списков задач, событий, игровых объектов, очередей обработки и любых контейнеров, где нужно почистить элементы по условию. 📣 C++ Ready | #практика
Почему для класса часто нужен virtual destructor? Если у класса есть virtual-функции, его часто используют полиморфно: Base* task = new Task; delete task; И вот здесь появляется опасность. Если у Base нет virtual destructor, удаление объекта через Base* может не вызвать деструктор наследника корректно. То есть ресурсы Task могут не освободиться. Код на слайде выглядит почти нормально: struct Base { virtual void run() = 0; }; Но если этот класс предназначен для удаления через указатель на Base, деструктор должен быть virtual: struct Base { virtual ~Base() = default; virtual void run() = 0; }; Это маленькая строчка, которая защищает от очень неприятных багов. 🔥 Если класс полиморфный и через него могут удалять наследников — добавь virtual destructor. 📣 C++ Ready | #совет
без подписи
без подписи
без подписи
без подписи
без подписи
без подписи
без подписи
🤔 AwesomeModernC++ — большая база ресурсов по современному C++! В этом репозитории собрана большая подборка материалов по современному C++: книги, статьи, видео, библиотеки и полезные инструменты для работы с C++11/14/17/20. Особенно полезен тем, кто хочет разобраться в STL, многопоточности, управлении памятью, шаблонах и современных практиках разработки. Оставляю ссылочку: GitHub 📱 📣 C++ Ready | #репозиторий
Интересная статья про попытку сделать игру на C++ через Raylib и лучше понять язык на практике! В этой статье: • Как Raylib помогает быстро начать с графикой, вводом и игровой логикой • Почему C++ нельзя воспринимать как “Java с другим синтаксисом” • Какие нюансы объектов, указателей и this всплывают уже в простом игровом коде Продолжай читать на Habr! 📣 C++ Ready | #статья
❤️ The Algorithms C++ — огромная база алгоритмов и структур данных на C++! Этот репозиторий отлично подойдёт тем, кто изучает алгоритмы, готовится к собеседованиям или хочет сильнее прокачать C++. Здесь собрано большое количество реализаций алгоритмов и структур данных с понятным кодом и хорошей организацией по темам. Можно не просто изучать теорию, а сразу смотреть, как алгоритмы реализуются на практике. Оставляю ссылочку: GitHub 📱 📣 C++ Ready | #репозиторий
без подписи
без подписи
без подписи
без подписи
без подписи
без подписи