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

Автор: @energy_it

Реклама на бирже: https://telega.in/c/cpp_ready
加入频道
👩‍💻 Изучаем полезные методы работы с памятью и значениями в 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
👩‍💻 Изучим умные указатели!

В этом посте мы рассмотрели основные типы умных указателей в C++. Вот эти три:

- Указатель std::unique_ptr
- Указатель std::shared_ptr
- Указатель std::weak_ptr


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

📣 C++ Ready | #гайд
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥36👍7🤝6
👩‍💻 CS50 на русском (Гарвардский курс по основам программирования)

Переведённые на русский язык лекции топового Гарвардского курса CS50 по основам программирования. Курс охватывает ключевые концепции информатики, такие как алгоритмы, структуры данных, веб-разработка и многое другое.

Ссылка на плейлист: YouTube 🖤


📣 C++ Ready | #курс
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥16👍6🤝2👎1