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

Cотрудничество: @energy_c

РКН: https://clck.ru/3QREHc
Download Telegram
Что же выведет консоль?
Anonymous Quiz
41%
A
22%
B
18%
C
19%
D
🔥10👍4❤1
is_constant_evaluated для выбора поведения при компиляции!

Сейчас научимся определять, выполняется ли код на этапе компиляции или уже в рантайме — с помощью встроенной функции std::is_constant_evaluated.

Это особенно полезно, когда одна и та же функция может быть вызвана как в constexpr контексте, так и в обычном, и нам нужно выполнять разные действия в зависимости от ситуации.

Для начала подключим стандартные библиотеки:
#include <iostream>
#include <type_traits>
// std::is_constant_evaluated


Создадим функцию, которая возвращает разные значения в зависимости от контекста вызова:
constexpr int compute() {
if (std::is_constant_evaluated()) {
return 42; // при компиляции
} else {
return 7; // при выполнении
}
}


Теперь используем эту функцию в двух вариантах:
int main() {
constexpr int a = compute();
// constexpr-контекст
int b = compute();
// обычный рантайм
std::cout << "a = " << a << '\n';
std::cout << "b = " << b << '\n';
}


Результат при запуске программы:
a = 42
b = 7


🔥 std::is_constant_evaluated позволяет адаптировать поведение функций под контекст вызова — выполнять тяжёлые операции заранее и экономить ресурсы в рантайме.

📣 C++ Ready | #практика
Please open Telegram to view this post
VIEW IN TELEGRAM
❤11🔥7👍6
👩‍💻 Познакомимся с двумя методами для работы с диапазонами!

• std::adjacent_find — ищет в указанном диапазоне первую пару одинаковых соседних элементов. Возвращает итератор на первый элемент такой пары или end(), если совпадений нет.

• std::generate — заполняет диапазон значениями, генерируемыми переданной функцией. Полезен для создания тестовых данных или инициализации контейнеров случайными или последовательными значениями.

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


📣 C++ Ready | #метод
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥25👍4❤1👎1
👩‍💻 Пишем экстрактор домена из URL и нормализация регистра!

Лёгкая функция на C++, которая проверяет строку на совпадение с простым URL‑форматом, извлекает доменное имя и приводит его к нижнему регистру.

В этой задаче:

• Базовая валидация: убеждаемся, что в строке есть хотя бы одна точка и нет пробелов.

• Определение начала: ищем «://» — если протокол указан, начинаем сразу после него, иначе с начала строки.

• Извлечение домена: обрезаем строку по первому слэшу после начала (или до конца).


Это позволяет надёжно получить доменное имя из самых разных URL‑строк и сразу сообщить об ошибке при некорректном вводе.

📣 C++ Ready | #задача
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥16❤7👍6🤝1
📂 Напоминалка по дизайну REST API архитектуры!

Это архитектурный стиль, где ресурсы адресуются понятными URI, а операции над ними выполняются стандартными HTTP‑методами.

Хороший дизайн включает понятное именование, пагинацию, фильтрацию и версионирование.

Сохрани, чтобы не забыть!

📣 C++ Ready | #ресурс
Please open Telegram to view this post
VIEW IN TELEGRAM
❤6👍4🔥4
This media is not supported in your browser
VIEW IN TELEGRAM
😎 radioprog — бесплатный учебник по программированию, подходящий для тех, кто хочет систематизировать знания!

Здесь вы найдёте пошаговое изучение языка: от первых программ и базового синтаксиса до работы с функциями, памятью, указателями, шаблонами и отладкой кода. Материалы сопровождаются примерами, разбором типичных ошибок и краткими тестами для самопроверки.

📌 Оставляю ссылочку: radioprog.ru

📣 C++ Ready | #ресурс
Please open Telegram to view this post
VIEW IN TELEGRAM
❤10👍6🔥4
👩‍💻 Инициализация захватов в лямбдах, переносим ресурсы и создаём локальное состояние прямо внутри функций!

Инициализация захватов через [x = expr] позволяет перемещать объекты внутрь лямбд, хранить внутреннее состояние и выполнять вычисления в момент захвата.

Что важно знать:
• [p = std::move(ptr)] — лямбда получает ресурс, указатель становится пустым.

• [data = heavyInit()] — захватываем результат функции или любое выражение.

• [id = 0]() mutable { return ++id; } — создаём локальный счётчик без глобальных переменных.


Это делает лямбды гибким инструментом, упрощая управление ресурсами и локальным состоянием.

📣 C++ Ready | #гайд
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥15❤6👍4
👩‍💻 Разберём работу с std::stringstream — инструмент для гибкой обработки строк в стиле потоков!

Он позволяет легко заменять и получать данные, восстанавливать поток после ошибок, читать и записывать байты напрямую, извлекать строки до разделителей и свободно перемещаться по содержимому.

📣 C++ Ready | #шпора
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥27❤8👍6🤝5