Библиотека C/C++ разработчика
6.8K subscribers
651 photos
689 videos
8 files
937 links
Полезные материалы по всему, что может быть полезно плюсовику/сишнику. По всем вопросам @evgenycarter
Download Telegram
😮‍💨Устали вручную разруливать зависимости в C++ проектах? Время автоматизировать процесс! 🕒💻

Пакетные менеджеры Conan и vcpkg позволяют легко управлять библиотеками, устанавливать зависимости и ускорять сборку. Разберем, как это работает, на открытом уроке.

Упростите себе жизнь: научитесь использовать пакетные менеджеры, чтобы писать код, а не разбираться с проблемами сборки.

Спикер Денис Злобинстарший инженер-программист в Astra Linux, опытный наставник разработчиков.

➡️Встречаемся 20 марта в 20:00 мск, разберем всё на практике! Участники получат скидку на большое обучение по разработке на С++.

Регистрация: https://vk.cc/cJOUIw

Реклама. ООО «Отус онлайн-образование», ОГРН 1177746618576, www.otus.ru
Пишем калькулятор на C++ с SFML

Привет, коллеги и доброжелательные критики! Сегодня я решил отвлечься от своей громоздкой работы, чтобы написать что-то простое, но с изюминкой — калькулятор с графическим интерфейсом на C++20 и SFML. Этот проект — не претензия на что-то грандиозное, а скорее лёгкий эксперимент, чтобы вспомнить, как приятно писать код, который сразу видно на экране. Заодно я поделюсь с вами своими мыслями, подходами и парой советов. Давайте разберём, как я это закрутил и почему выбрал именно SFML.

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

#cpp #programming

👉 @cpp_lib
📌 Оптимизация кода: убираем лишние копирования в C++

Сегодня я покажу вам, как неочевидные копирования объектов могут замедлять ваш код и как этого избежать.

Проблема: Лишние копирования
Допустим, у нас есть функция, которая возвращает std::vector<int>:


std::vector<int> getVector() {
std::vector<int> v = {1, 2, 3, 4, 5};
return v; // Возвращаем объект
}

void process() {
std::vector<int> data = getVector(); // Возможное копирование
}

Раньше здесь действительно происходило копирование, но начиная с C++11 работает NRVO (Named Return Value Optimization) и перемещение (move).

Однако копирования могут появиться, если компилятор не сможет применить NRVO. Например:


std::vector<int> getVector(bool flag) {
if (flag) {
std::vector<int> v1 = {1, 2, 3, 4, 5};
return v1; // NRVO сработает
} else {
return {6, 7, 8, 9, 10}; // Но здесь объект создается временно и потом копируется!
}
}

🔧 Как исправить?
Используем std::move или std::optional:


std::vector<int> getVector(bool flag) {
std::vector<int> v1 = {1, 2, 3, 4, 5};
std::vector<int> v2 = {6, 7, 8, 9, 10};
return flag ? std::move(v1) : std::move(v2); // Гарантируем перемещение
}


Или используем std::optional (полезно, если отсутствие значения — валидный вариант):


std::optional<std::vector<int>> getVector(bool flag) {
if (!flag) return std::nullopt;
return std::vector<int>{1, 2, 3, 4, 5};
}


Вывод
🔹 Следите за копированием больших объектов.
🔹 Используйте std::move, если данные больше не нужны.
🔹 Проверяйте, оптимизирует ли компилятор ваш код с NRVO.

#cpp #programming

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

Lecture 1. Scent of C++.
Lecture 2. Указатели и ссылки
Lecture 3. Имена и сущности
Lecture 4. Инициализация и копирование.
Lecture 5. RAII и перемещение
Lecture 6. Приведение типов
Lecture 7. Перегрузка операторов
Lecture 8. Наследование и полиморфизм
Lecture 9. Множественное наследование
Lecture 10. Языки и грамматики

источник

#cpp #programming

👉 @cpp_lib
Хотите прокачать навыки DevOps и успешно вкатиться в IT? Начните с актуального инструмента!

GitLab CI/CD — один из ключевых инструментов для автоматизации разработки. Его используют в компаниях от стартапов до корпораций.

На курсе «CI/CD на основе GitLab» вы научитесь развертывать пайплайны, настраивать CI/CD-процессы и работать с Docker и Kubernetes.

🔗 Пройдите вступительное тестирование и получите скидку на обучение. Ваш путь в DevOps начинается здесь

https://vk.cc/cJQpYd

Реклама. ООО «Отус онлайн-образование», ОГРН 1177746618576, www.otus.ru
Media is too big
VIEW IN TELEGRAM
Время разобраться с std::chrono

Видео о std::chrono, в котором представлен обзор функциональности, добавленной в C++11, C++17 и C++20. Посмотрите, чтобы узнать, какую часть chrono поддерживает ваш компилятор. Мы были очень удивлены тем, что обнаружили.

источник

#cpp #programming

👉 @cpp_lib
#вакансия #удалённо #parttime #remote #parttime #C++ #преподаватель

🦉  OTUS ищет преподавателей на онлайн-курс: С++ Developer Professional

Мы расширяем команду экспертов (уже более 600 человек). Преподавательский опыт не обязателен — мы научим вас всему, что нужно!

Требуется:
- Опыт коммерческой разработки на C++ от 3 лет. Опыт многопоточного и асинхронного программирования.

Обязанности:
- подготовиться к занятиям (темы на выбор, материалы предоставляются)
- преподавать в mts-link.ru, уделяя большое внимание практике. Здесь вы сможете развивать навыки публичных выступлений, работы с аудиторией и подачи обратной связи.

Условия:
гибкий график, легко совмещать с основной работой, занятия в вечернее время;
  оплата от 4000 до 6000 руб. за 1,5 часа занятия;
бонусы: доступ к нашим курсам, нетворкинг, развитие личного бренда, бесплатные воркшопы и конференции для наших преподавателей.

Обсудить подробнее: @candyfox24
Лекции С++ продвинутый поток ФПМИ 2023-24

Лекция 1. Введение в язык C++. Основные типы и операции над ними
Лекция 2. Основные команды в терминале. Компиляция программ
Лекция 3. Объявления и определения, области видимости, пространства имен
Лекция 4. Выражения и операторы. Управляющие конструкции
Лекция 5. Compile-time errors, runtime errors, undefined behavior
Лекция 6. Указатели
Лекция 7. Стековая, статическая и динамическая память
Лекция 8. Массивы, функции и указатели на функции

источник

#cpp #programming

👉 @cpp_lib