This media is not supported in your browser
VIEW IN TELEGRAM
Популярный и хороший сайт для практики — codechef
На платформе доступно множество языков, в том числе и C++. Задачи можно решать прямо в редакторе кода, а встроенный AI-ассистент поможет найти и исправить ошибку в коде.
📌 Ссылочка: codechef.com
📣 C++ Ready | #ресурс
На платформе доступно множество языков, в том числе и C++. Задачи можно решать прямо в редакторе кода, а встроенный AI-ассистент поможет найти и исправить ошибку в коде.
Please open Telegram to view this post
VIEW IN TELEGRAM
👍8🔥3
🔥11👍7🤝1
Сегодня мы посвятим время важной теме — использованию макросов в C++ с помощью директивы препроцессора #define.
Макросы в C++ представляют собой механизм текстовой подстановки, реализуемый посредством директивы #define. Они позволяют задавать именованные константы и создавать макрофункции — фрагменты кода, которые заменяются непосредственно в исходном коде на этапе препроцессинга.
Например, часто встречается макрос для задания константы:
После его определения PI можно использовать как числовую константу:
Еще одно полезное применение макросов — вычисление количества элементов в статическом массиве:
Этот макрос позволяет получить размер массива без необходимости вручную пересчитывать элементы:
Но следует помнить,
🔥 Если вы хотите углубить свои знания по этой теме, не стесняйтесь писать в комментариях!
📣 C++ Ready | #практика
Макросы в C++ представляют собой механизм текстовой подстановки, реализуемый посредством директивы #define. Они позволяют задавать именованные константы и создавать макрофункции — фрагменты кода, которые заменяются непосредственно в исходном коде на этапе препроцессинга.
Например, часто встречается макрос для задания константы:
#define PI 3.14159 // Значение числа π
После его определения PI можно использовать как числовую константу:
double r = 10;
double S = PI * r * r; // Вычисляем площадь круга с радиусом 10
Еще одно полезное применение макросов — вычисление количества элементов в статическом массиве:
#define ARRAY_SIZE(arr) (sizeof(arr) / sizeof((arr)[0]))
Этот макрос позволяет получить размер массива без необходимости вручную пересчитывать элементы:
int numbers[] = {1, 2, 3, 4, 5};
int size = ARRAY_SIZE(numbers); // size будет равен 5
Но следует помнить,
ARRAY_SIZE()
корректно работает только со статическими массивами. Если передать в него указатель (например, динамический массив), результат будет некорректным.🔥 Если вы хотите углубить свои знания по этой теме, не стесняйтесь писать в комментариях!
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥20👍10👎2
Set — это контейнер из стандартной библиотеки STL для хранения уникальных элементов в отсортированном виде. Он реализован на основе красно-черного дерева, поэтому вставка, удаление и поиск выполняются за счет O(log n).
Основные моменты:
• insert — добавление элемента
• erase — удаление элемента
• find — поиск элемента
🔥 — если узнал новое
🤝 — если уже использовал
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥25🤝16👍9
Итераторы в C++ — удобный способ работы с контейнерами
#новичкам
Итератор — это объект, который позволяет перемещаться по элементам контейнера. Он похож на указатель, но работает с контейнерами стандартной библиотеки, такими как
Рассмотрим итераторы на примере
Далее можно обойти все элементы с помощью итератора
А теперь упростим запись, используя
🔥 Такой способ удобнее, особенно для простых случаев. Однако итераторы остаются мощным инструментом, позволяя работать со сложными структурами данных.
📣 C++ Ready | #практика
#новичкам
Итератор — это объект, который позволяет перемещаться по элементам контейнера. Он похож на указатель, но работает с контейнерами стандартной библиотеки, такими как
vector
, map
, set
или list
.Рассмотрим итераторы на примере
std::vector<int>
, для начала создадим и присвоим значение:std::vector<int> numbers = {1, 2, 3, 4, 5};
Далее можно обойти все элементы с помощью итератора
it
. Здесь begin()
возвращает итератор на первый элемент, а end()
— на элемент за последним:for (auto it = numbers.begin(); it != numbers.end(); ++it) {
std::cout << *it << " ";
}
А теперь упростим запись, используя
range-based for.
Первым аргументом мы должны обозначить тип элемента массива, чаще всего используют auto
, далее записываем название элемента на каждом цикла и через : пишем название самой структуры:for (auto num : numbers) {
std::cout << num << " ";
}
🔥 Такой способ удобнее, особенно для простых случаев. Однако итераторы остаются мощным инструментом, позволяя работать со сложными структурами данных.
Please open Telegram to view this post
VIEW IN TELEGRAM
👍14🔥6
Cтруктурированный, относительно полный, и достаточно глубокий материал по стандарту языка C++, состоящий из набора коротких видео, рассчитанных на людей уже знающих язык. В этих видео автор, в меру своего разумения, пытается освещать тонкие и дискуссионные вопросы С++
Ссылочка на плейлист: YouTube🖤
Please open Telegram to view this post
VIEW IN TELEGRAM
👍20🔥6👎1
•
std::async
— выполняет функции в отдельных потоках, управляя ими автоматически. Результат выполнения возвращается через std::future
, что упрощает работу с асинхронными задачами.•
std::variant
— позволяет хранить значения разных типов в одной переменной, гарантируя, что в каждый момент времени используется только один тип. Это исключает ошибки приведения и делает код более надежным.🔥 — если узнал новое
🤝 — если уже пользовался
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥25👍4
constexpr
— это спецификатор, обозначающий, что выражение, переменная или функция могут быть вычислены на этапе компиляции, если их аргументы являются константными, что способствует оптимизации и повышению производительности кода.Основные моменты:
• constexpr функции — вычисление значений на этапе компиляции
• constexpr переменные — создание неизменяемых констант
• Применение для определения размеров массивов и оптимизации программ
🔥 — если узнал новое
🤝 — если уже использовал
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥25🤝8👍6