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
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
Метапрограммирование
1. Введение в шаблоны
2. C++20: requires keyword
3. C++20: concepts
4. Operator spaceship
5. ADL и CRTP
6 (семинар). Typelist
7. Traits, Policy Based Design, Mixins
8. Полиморфизм
9 (семинар). Реализация std::function
10 (семинар). Реализация std::any без виртуальных функций
источник
#cpp #programming
👉 @cpp_lib
1. Введение в шаблоны
2. C++20: requires keyword
3. C++20: concepts
4. Operator spaceship
5. ADL и CRTP
6 (семинар). Typelist
7. Traits, Policy Based Design, Mixins
8. Полиморфизм
9 (семинар). Реализация std::function
10 (семинар). Реализация std::any без виртуальных функций
источник
#cpp #programming
👉 @cpp_lib
😮💨Устали вручную разруливать зависимости в C++ проектах? Время автоматизировать процесс! 🕒💻
Пакетные менеджеры Conan и vcpkg позволяют легко управлять библиотеками, устанавливать зависимости и ускорять сборку. Разберем, как это работает, на открытом уроке.
Упростите себе жизнь: научитесь использовать пакетные менеджеры, чтобы писать код, а не разбираться с проблемами сборки.
Спикер Денис Злобин — старший инженер-программист в Astra Linux, опытный наставник разработчиков.
➡️Встречаемся 20 марта в 20:00 мск, разберем всё на практике! Участники получат скидку на большое обучение по разработке на С++.
Регистрация: https://vk.cc/cJOUIw
Реклама. ООО «Отус онлайн-образование», ОГРН 1177746618576, www.otus.ru
Пакетные менеджеры 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++20 и SFML. Этот проект — не претензия на что-то грандиозное, а скорее лёгкий эксперимент, чтобы вспомнить, как приятно писать код, который сразу видно на экране. Заодно я поделюсь с вами своими мыслями, подходами и парой советов. Давайте разберём, как я это закрутил и почему выбрал именно SFML.
https://habr.com/ru/articles/891354/
#cpp #programming
👉 @cpp_lib
📌 Оптимизация кода: убираем лишние копирования в C++
Сегодня я покажу вам, как неочевидные копирования объектов могут замедлять ваш код и как этого избежать.
Проблема: Лишние копирования
Допустим, у нас есть функция, которая возвращает
Раньше здесь действительно происходило копирование, но начиная с C++11 работает NRVO (Named Return Value Optimization) и перемещение (move).
Однако копирования могут появиться, если компилятор не сможет применить NRVO. Например:
🔧 Как исправить?
Используем
Или используем
Вывод
🔹 Следите за копированием больших объектов.
🔹 Используйте
🔹 Проверяйте, оптимизирует ли компилятор ваш код с NRVO.
#cpp #programming
👉 @cpp_lib
Сегодня я покажу вам, как неочевидные копирования объектов могут замедлять ваш код и как этого избежать.
Проблема: Лишние копирования
Допустим, у нас есть функция, которая возвращает
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
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
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
Базовый курс 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
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
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
Видео о std::chrono, в котором представлен обзор функциональности, добавленной в C++11, C++17 и C++20. Посмотрите, чтобы узнать, какую часть chrono поддерживает ваш компилятор. Мы были очень удивлены тем, что обнаружили.
источник
#cpp #programming
👉 @cpp_lib