Latest posts

C/C++ Ready | Программирование
23 Sept, 07:30
Почему std::move иногда вообще ничего не двигает?std::move не перемещает объект сам по себе. Он только превращает выражение в rvalue-ссылку, чтобы компилятор мог выбрать move-конструктор или move-присваивание.Но если объект const, перемещение может неожиданно превратиться в обычное копирование: const std::string name = "ready";std::string copy = std::move(name);Кажется, что здесь будет move.Но move-конструктор строки обычно принимает неконстантную rvalue-ссылку: std::string(std::string&& other);А из const объекта нельзя безопасно “забрать” внутреннее состояние, потому что это изменило бы объект.Поэтому компилятор выбирает копирование: const std::string name = "ready"; std::string result = std::move(name); // copyНормальное перемещение работает с неконстантным объектом: std::string name = "ready"; std::string result = std::move(name); // moveПосле такого name остаётся валидным, но его содержимое уже не стоит использовать как прежнее значение: std::cout << result << '\n';std::move не гарантирует перемещение. Если объект const, чаще всего ты получишь копирование, просто записанное очень уверенным синтаксисом.📣 C++ Ready | #совет


C/C++ Ready | Программирование
22 Sept, 06:12
Большой разбор C++ механик!Автор собрал масштабный материал по приёмам, которые встречаются в современном и легаси C++ коде. Внутри есть RAII, Scope Guard, умные указатели, move-семантика, шаблоны, исключения, Pimpl и десятки других идей с объяснением, откуда они появились.В статье разбирают: • как связывать владение ресурсом со временем жизни объекта • почему noexcept влияет на производительность контейнеров • где старые идиомы помогают понять код движков и библиотекПродолжай читать на Habr📣 C++ Ready | #статья


C/C++ Ready | Программирование
21 Sept, 10:30
Почему std::move сам ничего не перемещает?Кажется, что вызов уже перенёс данные из одного объекта в другой.На деле std::move только сообщает компилятору, что объект можно рассматривать как временный. Само перемещение происходит, когда другой код выбирает move-конструктор или move-присваивание. std::string source = "report"; std::string target = std::move(source);Здесь строка target забирает ресурсы source. После этого source остаётся валидной, но её содержимое не определено контрактом и часто оказывается пустым.Поэтому нельзя писать логику, которая рассчитывает на конкретное значение после перемещения. send(std::move(message)); // message больше не используем как прежнее значениеУ std::move есть ещё одна ловушка. Перемещение из const-объекта обычно превращается в копирование, потому что move-конструктор не может менять источник. const std::string name = "ready"; auto copy =


C/C++ Ready | Программирование
21 Sept, 08:30
Не отставайте от рынка — учитесь со скидкой 16%Если чувствуете, что стоите на месте, и хотите освоить востребованную профессию, — сейчас хороший момент начать.Потому что до 30 сентября на все курсы Практикума действует скидка 16%.Выбрать курсВы сможете:— получить актуальные навыки; — освоить ИИ-инструменты для работы; — перенять опыт экспертов, которые двигают индустрию; — попасть в сообщество выпускников, где можно попросить совета и, возможно, найти будущих коллег.Просто выберите курс, начните учиться бесплатно и получите скидку 16% — она автоматически появится в личном кабинете.Учиться!Erid: 2SDnjc7khBq
1,460Open in Telegram
C/C++ Ready | Программирование
21 Sept, 06:30
👨💻 CppCourse — курс по C++ и объектно-ориентированному программированию!Обучение идёт от работы с памятью, классов и наследования до шаблонов, STL, RAII, умных указателей и других возможностях C++. Теория закрепляется на учебном проекте, а ещё есть лабораторные, экзаменационные материалы и отдельный демо-проект с юнит-тестами, паттернами и архитектурой MVP.Оставляю ссылочку: GitHub 📱📣 C++ Ready | #репозиторий
C/C++ Ready | Программирование
18 Sept, 17:12
Почему setprecision не всегда означает количество знаков после точки?В C++ для форматирования дробных чисел часто используют std::setprecision. На первый взгляд кажется, что он задаёт количество цифр после запятой.Но без std::fixed это не так: std::cout << std::setprecision(3) << 123.456;Результат будет не 123.456 с тремя знаками после точки. Поток выведет три значащие цифры: 123Если нужны знаки после точки, добавляют std::fixed: std::cout << std::fixed << std::setprecision(3) << 123.456;Теперь результат будет предсказуемым: 123.456Для маленьких чисел разница ещё заметнее: std::cout << std::setprecision(2) << 0.012345;


C/C++ Ready | Программирование
18 Sept, 07:30
Собираем простой пул объектов на C++!Иногда объект дорого создавать заново каждый раз. Например, буфер, парсер, контекст или структура с заранее выделенной памятью.В этой задаче: • храним свободные объекты • выдаём готовый экземпляр • возвращаем объект обратно • очищаем состояние перед повторным использованиемТакой подход помогает снизить количество аллокаций и делает повторное использование ресурсов более явным.📣 C++ Ready | #задача




C/C++ Ready | Программирование
17 Sept, 08:12
Пишем вывод последних строк файла на C++!Иногда нужно быстро посмотреть конец лога или временного файла. Сделаем маленькую функцию, которая хранит только последние N строк и не загружает весь файл в память.Для этого удобно использовать std::deque. Он позволяет добавлять строки в конец и удалять самые старые строки из начала.Сначала подключим нужные заголовки: #include <deque> #include <fstream> #include <iostream> #include <string>Теперь открываем файл и готовим контейнер: std::ifstream in(path); std::deque<std::string> tail; std::string line;При чтении добавляем новую строку в конец: while (std::getline(in, line)) { tail.push_back(line);
C/C++ Ready | Программирование
16 Sept, 08:12



C/C++ Ready | Программирование
15 Sept, 08:12
Шпаргалка по std::span в C++20!Например, std::span позволяет передать часть vector, array или обычного C-массива без копирования и без владения памятью.На картинке собраны основные сценарии std::span. Есть создание view на диапазон, size, size_bytes, front, back, data, first, last, subspan и важное предупреждение про lifetime исходного контейнера.Сохрани, чтобы не потерять!📣 C++ Ready | #ресурс


C/C++ Ready | Программирование
14 Sept, 08:12
Интересная статья про constexpr Game of Life на C++!Автор разбирает необычный эксперимент, где логика игры считается ещё на этапе компиляции. Внутри есть consteval, constexpr, двумерный Canvas, генерация поколений и попытка достать результат без обычного запуска программы.В статье автор показывает: • как Game of Life можно представить как набор compile-time вычислений • зачем нужен consteval и чем он строже обычного constexpr • как искать результат работы программы в артефактах сборкиПродолжай читать на Habr📣 C++ Ready | #статья


C/C++ Ready | Программирование
12 Sept, 12:10
Почему reserve() не добавляет элементы в vector?reserve() часто используют перед заполнением vector: std::vector<int> nums; nums.reserve(10);После этого у vector действительно появляется место под 10 элементов, но размер остаётся нулевым: std::cout << nums.size() << '\n'; // 0 std::cout << nums.capacity() << '\n'; // 10Важно не путать size и capacity.Такой код ошибочный: std::vector<int> nums; nums.reserve(10);nums[0] = 42; // undefined behaviorИндексатор работает только с уже существующими элементами. reserve() выделяет память, но не создаёт объекты внутри vector.


C/C++ Ready | Программирование
12 Sept, 10:10
Ищем новичков во фронтенд-разработке и вёрстке сайтов.Хотим показать, как получить реальный опыт в разработке сайтов и веб-приложений.А именно:- Сгенерировать сайт через Giga, DeepSeek, ChatGPT - Сверстать страницу на HTML + CSS по Figma макету - Оживить её логикой на JavaScript - Превратить сайт во фронтенд-приложение на Angular - Подключить backend и выложить проект на хостингЧтобы в итоге ты своими руками всего за 7 дней разработал качественный сайт, который не стыдно добавить в портфолио или продать.Такой опыт можно получить на бесплатном практикуме с поддержкой от опытных кураторов на каждом этапе.👉 Приходи на бесплатное обучение и зови с собой друзейБонусом получишь гайд: «Фронтенд в 2026 году: стоит ли входить сейчас и что делать новичку в эпоху ИИ».Стартуем завтра.


C/C++ Ready | Программирование
12 Sept, 07:12
👍 The Art of Developing in Modern C++ — практические задания по современному C++!В репозитории собраны решения и упражнения из специализации «Основы разработки на современном C++» от МФТИ и Яндекса. Материал разбит по уровням сложности — от «Белого пояса» с базовыми конструкциями языка до более продвинутых заданий из «Жёлтого», «Красного» и «Коричневого поясов».Оставляю ссылочку: GitHub 📱📣 C++ Ready | #репозиторий
C/C++ Ready | Программирование
11 Sept, 06:12
Собираем простой парсер CLI-аргументов на C++!Нужно разобрать аргументы командной строки. Сделаем маленький парсер для флагов и параметров вида --key=value.В этой задаче: • идём по argv • отделяем флаги от значений • сохраняем параметры в map • проверяем наличие нужных опцийТакой парсер удобен для утилит, тестовых запусков и маленьких dev-инструментов.📣 C++ Ready | #задача




C/C++ Ready | Программирование
10 Sept, 08:12



C/C++ Ready | Программирование
9 Sept, 15:12
Парсим простой CSV без сторонних библиотек на C++!Иногда нужно разобрать строку CSV из лога, экспорта или конфигурации. Если формат простой, можно обойтись стандартной библиотекой и аккуратно пройти строку посимвольно.Возьмём строку: std::string line = "id,\"hello, cpp\",active";Главная сложность это запятая внутри кавычек. Её нельзя считать разделителем.Заведём буфер и флаг: std::string cell; bool quoted = false;Теперь проходим символы: for (char ch : line) { if (ch == '"') { quoted = !quoted; continue; }
C/C++ Ready | Программирование
9 Sept, 07:12
Разбираем std::filesystem 7 функций для работы с файлами!std::filesystem помогает работать с путями, директориями и файлами без ручной склейки строк и платформенных ifdef.В этой шпоре: exists, is_regular_file, create_directories, directory_iterator, recursive_directory_iterator, copy_file и remove_all.📣 C++ Ready | #шпора




C/C++ Ready | Программирование
8 Sept, 15:12
Собираем простой dispatcher команд на C++!Иногда программа принимает строковую команду и должна вызвать нужное действие. Самый быстрый путь часто начинается с цепочки if.Например, так легко получить длинный блок условий: if (cmd == "build") build(); else if (cmd == "clean") clean(); else if (cmd == "status") status();Когда команд становится больше, такой код сложнее расширять и тестировать. Удобнее явно завести таблицу команд.Опишем тип обработчика: using Handler = void ()();Теперь можно собрать словарь: std::unordered_map commands{ {"build", build}, {"clean", clean}, {"status", status} };
C/C++ Ready | Программирование
8 Sept, 08:12
Шпаргалка по smart pointers в C++!Например, std::unique_ptr показывает единственное владение объектом, std::shared_ptr разделяет владение через счётчик ссылок, а std::weak_ptr помогает наблюдать объект без продления его жизни.На картинке собраны основные правила работы со smart pointers. Есть std::unique_ptr, std::shared_ptr, std::weak_ptr, make_unique, make_shared, custom deleters, lock, reset, get и важные нюансы владения.Сохрани, чтобы не потерять!📣 C++ Ready | #ресурс

Related Channels
Other channels in the same section of the catalogue.
