C/C++ Ready | Программирование
12.2K subscribers
701 photos
42 videos
336 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
🔥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
👩‍💻 Ссылки и указатели: Что к чему?

1. Указатели: Где живут данные
— это такие "хитрые" переменные, которые хранят не данные, а адреса других переменных:
int x = 10;
int* ptr = &a; // ptr хранит адрес переменной a


2. Ссылки: Удобные "алиасы" — нечто вроде альтернативных имён для переменных. Позволяют обращаться к одной и той же переменной под разными именами:
int& ref = x; // ref — это просто другое имя для переменной x


3. Указатели против ссылок — Вот в чём интересная штука: указатели могут быть неинициализированными или "нулевыми", что указывает на отсутствие адреса.

А вот ссылки такого себе позволить не могут. Ссылку обязательно нужно сразу инициализировать и после этого она не может быть переназначена на что-то другое:
int* ptr2 = nullptr; // указатель может быть пустым
// int& ref2; // ошибка, ссылку нельзя оставить неинициализированной


4. Указатели и ссылки в функциях —когда вы передаёте аргументы в функции, указатели и ссылки позволяют не копировать переменные, а передавать их адреса или алиасы:
void increment(int* ptr) {
(*ptr)++; // изменение значения по указателю
}
increment(&a); // передаём адрес переменной a


📣 C++ Ready | #техсобес
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥23👍6🤝3
📖 Контролируемый взлом

Книга предназначена как для профессионалов в области информационной безопасности, так и для широкой аудитории, интересующейся темой киберугроз и защиты данных

Автор: Юрий Другач
Год: 2024


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

📣 C++ Ready | #книга
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥7👍1👎1
👩‍💻 Давайте рассмотрим шаблоны!

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

- Шаблон для нахождения максимума
- Шаблон класса для контейнера
- Шаблон с несколькими параметрами


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

📣 C++ Ready | #гайд
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
Что будет в консоли?
Anonymous Quiz
53%
A
26%
B
5%
C
17%
D
👍12🔥3