C/C++ Ready | Программирование
12.2K subscribers
707 photos
42 videos
338 links
Авторский канал по разработке на C и C++.
Ресурсы, гайды, задачи, шпаргалки.
Информация ежедневно пополняется!

Автор: @energy_it

Реклама на бирже: https://telega.in/c/cpp_ready
加入频道
👩‍💻 Рассмотрим различные функции!

Невозможно удержать в голове все методы языка, даже если обучаешься каждый день, поэтому держите небольшую шпаргалку по различным методам в C++

📣 C++ Ready | #шпора
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥29👍7🤝4
📖 Unreal Engine 5 Game Development with C++ Scripting

Авторы книги предлагают пошаговые инструкции по разработке игр, начиная с основ и заканчивая более сложными аспектами

Автор: Дэвид Никсон
Год: 2021


⬇️ Скачать книгу

📣 C++ Ready | #книга
Please open Telegram to view this post
VIEW IN TELEGRAM
👍11🔥2👎1
👩‍💻 Изучаем полезные методы работы с памятью и значениями в C++

• Optional — Позволяет безопасно обрабатывать возможные ошибки и неопределенные значения.

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

🔥 — если узнал новое
🤝 если уже пользовался

📣 C++ Ready | #метод
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥22👍9🤝2
This media is not supported in your browser
VIEW IN TELEGRAM
AtCoder — Платформа, на которой вы можете следить за контестами по спортивному программированию, тренироваться к ним и участвовать в них

📌 Ссылочка: atcoder.jp

📣 C++ Ready | #ресурс
Please open Telegram to view this post
VIEW IN TELEGRAM
👍10👎2🔥2
🖥 Поработаем с указателями и памятью

Указатели — одна из сложных, но мощных сторон C++. Разберем их использование и подводные камни:

1. Указатели и динамическая память Использование new и delete для управления памятью:
int* ptr = new int(42);
std::cout << *ptr << std::endl; // 42
delete ptr; // Освобождение памяти


2. Умные указатели unique_ptr
Автоматизируют управление памятью, предотвращая утечки:
#include <memory>
std::unique_ptr<int> ptr = std::make_unique<int>(42);
std::cout << *ptr << std::endl; // 42


3. Передача указателя на функцию
Указатели позволяют передавать функции как параметры:
void apply(int (*func)(int), int x) {
std::cout << func(x) << std::endl;
}

int square(int x) { return x * x; }

apply(square, 5); // 25

Этот пример демонстрирует передачу функции для обработки данных

📣 C++ Ready | #техсобес
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥16👍6🤝3
Что будет в консоли?
Anonymous Quiz
6%
A
16%
B
31%
C
47%
D
👍14🔥10🤝2
👩‍💻 Рассмотрим создание таймера

В этом посте мы создадим таймер на C++, который выполняет обратный отсчет времени и запускает функцию по завершению.

- Запрос времени и проверка ввода
- Функция обратного отсчета
- Вызов функции таймера
- Действие по завершении


🔥 — если узнал новое
🤝 если уже пользовался

📣 C++ Ready | #гайд
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥60🤝10👍5👎1
This media is not supported in your browser
VIEW IN TELEGRAM
Знали про интересный ресурс — Tutorials Point ?

Здесь собрано очень много полезной информации о C++, также к каждому туториалу прикреплен код

📌 Ссылочка: tutorialspoint.com

📣 C++ Ready | #ресурс
Please open Telegram to view this post
VIEW IN TELEGRAM
👍17🔥3🤝3
🖥Непредсказуемое поведение при использовании std::move

Сегодня рассмотрим, как неправильное использование std::move может привести к неожиданным багам. Хотя этот инструмент полезен для оптимизации, он требует точного понимания, чтобы избежать ловушек.


Повторное использование объекта после std::move
После применения std::move объект переходит в состояние "неопределенности". Попытка использовать такой объект может вызвать неожиданные проблемы
std::string str = "Hello";
std::string moved_str = std::move(str);

std::cout << "Moved string: " << moved_str << "\n";
std::cout << "Original string: " << str << "\n"; // Содержимое str не определено!

Результат: moved_str содержит "Hello", но str становится пустым или неопределенным.

Решение: Избегать доступа к перемещенному объекту
Если объект перемещен, не используйте его напрямую:
std::string moved_str = std::move(str);
if (str.empty()) {
std::cout << "Original string is now empty!\n";
}


Вектор и std::move
Использование std::move с контейнерами, такими как std::vector, может привести к потере данных:
std::vector<int> vec = {1, 2, 3};
std::vector<int> moved_vec = std::move(vec);

std::cout << "Original vector size: " << vec.size() << "\n";
std::cout << "Moved vector size: " << moved_vec.size() << "\n";

Результат: vec становится пустым, а данные передаются в moved_vec. Однако повторное использование vec вызовет проблемы.

После перемещения не используйте исходный объект, а для контейнеров всегда проверяйте их состояние после std::move

📣 C++ Ready | #практика
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥15👍9