Летс го, в этом посте изучим использование C++ шаблонов, которые позволяют создавать универсальные функции и классы. Вы узнаете про:
- Шаблон для нахождения максимума
- Шаблон класса для контейнера
- Шаблон с несколькими параметрами
🔥 — если узнал новое
🤝 — если уже пользовался
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥29🤝12👍4
This media is not supported in your browser
VIEW IN TELEGRAM
Посоветую вам очередную интересную платформу — Codingame
Здесь собрано много крутых заданий, которые вы будете решать, играя в игру, так можно провести время весело и с пользой
📌 Ссылочка: codingame.com
📣 C++ Ready | #ресурс
Здесь собрано много крутых заданий, которые вы будете решать, играя в игру, так можно провести время весело и с пользой
Please open Telegram to view this post
VIEW IN TELEGRAM
👍6🔥3🤝2
👍12🔥3
Знали что, многие допускают ошибку при использовании оператора delete?
Сегодня как раз ее разберем. Распространенную ошибку в C++ при работе с операторами delete и delete[], она может привести к сбоям программы и утечкам памяти:
Операторы
Для освобождения памяти, выделенной с помощью
Правильное использование delete[]:
Другой распространенный случай — удаление одной и той же памяти дважды. Это может привести к неопределенному поведению:
Установить указатель в nullptr
После того как память освобождена, всегда обнуляйте указатель:
🔥 Правильное использование этих операторов — ключ к предотвращению утечек памяти и ошибок в управлении памятью.
Всегда следите за тем, какой тип памяти вы освобождаете, и избегайте двойного удаления.
📣 C++ Ready | #практика
Сегодня как раз ее разберем. Распространенную ошибку в C++ при работе с операторами delete и delete[], она может привести к сбоям программы и утечкам памяти:
Операторы
delete
и delete[]
предназначены для освобождения памяти, выделенной с помощью new
и new[]
соответственно. Часто можно столкнуться с ошибками, если перепутать эти операторы:int* ptr = new int[5]; // Выделили память для массива
delete ptr; // Ошибка! Использован неправильный оператор
Для освобождения памяти, выделенной с помощью
new[]
, нужно использовать delete[]
.Правильное использование delete[]:
int* ptr = new int[5]; // Выделили память для массива
delete[] ptr; // Правильно освобождаем память
Другой распространенный случай — удаление одной и той же памяти дважды. Это может привести к неопределенному поведению:
int* ptr = new int[5];
delete[] ptr; // Освободили память
delete[] ptr; // Ошибка: память уже освобождена
Установить указатель в nullptr
После того как память освобождена, всегда обнуляйте указатель:
int* ptr = new int[5];
delete[] ptr;
ptr = nullptr; // Указатель больше не указывает на освобожденную память
🔥 Правильное использование этих операторов — ключ к предотвращению утечек памяти и ошибок в управлении памятью.
Всегда следите за тем, какой тип памяти вы освобождаете, и избегайте двойного удаления.
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥23👍13🤝4
В этом посте мы создадим систему отслеживания задач с использованием очереди с приоритетами.
- Создание структуры задачи
- Добавление задачи в очередь
- Выполнение задачи
- Основная программа
🔥 — если узнал новое
🤝 — если уже пользовался
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥26🤝7👍5
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥23👍8
This media is not supported in your browser
VIEW IN TELEGRAM
Интересный сайт с разборами задач — PVS-Studio
Там собрано много крутых туториалов, котрые регулярно пополняются, они сделаны в интересном формате, который не позволит вам заснуть во время изучения
📌 Оставляю ссылочку: pvs-studio.com
📣 C++ Ready | #ресурс
Там собрано много крутых туториалов, котрые регулярно пополняются, они сделаны в интересном формате, который не позволит вам заснуть во время изучения
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥8👍5🤝1
👍13🔥6
В C++ механизмы копирования и перемещения позволяют эффективно управлять ресурсами объектов, избегая избыточных копий и улучшая производительность при передаче объектов:
1. Конструктор копирования — создает новый объект, копируя данные из существующего:
MyClass(const MyClass& other) {
data = new int(*other.data);
// Копируем данные из другого объекта
}
2. Конструктор перемещения — передает владение ресурсом от одного объекта к другому, избегая копирования данных:
MyClass(MyClass&& other) noexcept : data(other.data) {
other.data = nullptr;
// После перемещения, объект other не имеет данных
}
3. Оператор присваивания (копирования) — переназначает ресурсы, освобождая старые данные и копируя новые:
MyClass& operator=(const MyClass& other) {
if (this != &other) {
// Проверка на самоприсваивание
delete data; // Освобождаем старые ресурсы
data = new int(*other.data); // Копируем данные
}
return *this;
}
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥15👍8