Move-семантика — это механизм C++, который позволяет эффективно перемещать ресурсы, избегая затратных копирований объектов.
Использование rvalue ссылок и функции move() помогает оптимизировать работу с временными объектами.
Особенности и использование смотри в картинках выше!
🔥 — если узнал новое
🤝 — если уже пользовался
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥66👍16🤝16
This media is not supported in your browser
VIEW IN TELEGRAM
metanit — портал, на котором представлено множество полезных материалов для обучения программированию. Здесь можно найти ресурсы по разным языкам, в том числе и C++, каждое пособие содержит примеры кода.
📌 Ссылочка: metanit.com
📣 C++ Ready | #ресурс
Please open Telegram to view this post
VIEW IN TELEGRAM
👍27🔥6
Небольшая шпаргалка по C++, которая поможет вам вспомнить синтаксис основных концепций языка.
Please open Telegram to view this post
VIEW IN TELEGRAM
👍21🔥6👎2
Рекурсия — это когда функция вызывает саму себя для решения подзадач, но при её использовании можно столкнуться с ошибками.
1. Факториал: базовый пример.
Чтобы понять рекурсию, рассмотрим классический пример вычисления факториала числа:
int factorial(int n) {
return (n == 0) ? 1 : n * factorial(n - 1);
}
Функция вызывает саму себя, пока не достигнет базового случая — 0.
2. Бесконечная рекурсия: типичная ошибка
Если базовый случай отсутствует, программа может уйти в бесконечный цикл и вызвать переполнение стека:
void infiniteRecursion() {
infiniteRecursion(); // рекурсия без выхода
}
Это приведёт к падению программы из-за переполнения стека.
3. Оптимизация: хвостовая рекурсия
Иногда можно использовать хвостовую рекурсию, чтобы избежать дополнительных затрат на стек вызовов:
int tailFactorial(int n, int result = 1) {
return (n == 0) ? result : tailFactorial(n - 1, result * n);
}
Здесь результат передаётся как параметр, что снижает количество вызовов функции.
Please open Telegram to view this post
VIEW IN TELEGRAM
👍21🤝6🔥5
📖 Основы программирования на языке C
⬇️ Скачать книгу
📣 C++ Ready | #книга
Подробное руководство для начинающих, которое знакомит с фундаментальными концепциями языка C, от синтаксиса до структур данных.
Автор: Дорогов В.
Год: 2020
Please open Telegram to view this post
VIEW IN TELEGRAM
👍8🔥4
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥39🤝27👍5
Большая подробная шпаргалка по регулярным выражениям в С++, в которой разобраны как базовые, так и математические выражения.
Please open Telegram to view this post
VIEW IN TELEGRAM
👍20🔥4👎1
RAII — это идиома C++, которая связывает жизненный цикл ресурса с объектом, владеющим этим ресурсом.
Этот метод управления ресурсами помогает избежать утечек, автоматически освобождая ресурсы при уничтожении объекта.
🔥 — если узнал новое
🤝 — если уже пользовался
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥50🤝19👍8
Please open Telegram to view this post
VIEW IN TELEGRAM
👍69🔥20😁1
C++ 11 познакомил нас с constexpr, а с приходом C++ 14 и 17 это слово стало ещё более гибким и могущественным.
Но многие до сих пор недооценивают его силу, а зря! Попробуем разобраться, как constexpr может изменить твой код к лучшему.
Итак, представь себе простую задачу: тебе нужно вычислить факториал числа, и ты хочешь, чтобы компилятор это сделал на этапе компиляции (кто же хочет ждать вычислений в рантайме, если это можно избежать?). Вот решение без constexpr:
int factorial(int n) {
return n <= 1 ? 1 : n * factorial(n - 1);
}
int result = factorial(5); // вычисляется на этапе выполнения
Теперь с constexpr:
constexpr int factorial(int n) {
return n <= 1 ? 1 : n * factorial(n - 1);
}
constexpr int result = factorial(5); // вычисляется на этапе компиляции
Компилятор вычисляет factorial(5) ещё до запуска программы, что ускоряет код и снижает нагрузку в рантайме, но есть пара нюансов:
• Чистота функций: constexpr функции должны быть "чистыми" — не менять глобальные данные и быть полностью детерминированными.
• Решение компилятора: компилятор может выполнить вычисление в constexpr, но не обязан. Если не удастся, он выполнит его в рантайме.
Так что в использовании constexpr есть свои тонкости, но при правильном подходе это просто находка для оптимизации. Делитесь своим мнением в комментариях и если было полезно, ставь реакцию под постом!
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥32👍13🤝3❤1
📖 С++ Шаг за шагом
⬇️ Скачать книгу
📣 C++ Ready | #книга
Учебное пособие для начинающих, которое постепенно вводит в мир программирования на C++, объясняя основные концепции и синтаксис языка.
Автор: Шилдт Герберт
Год: 2013
Please open Telegram to view this post
VIEW IN TELEGRAM
👍17🔥7🤝3👎2