en
Feedback
Библиотека задач по C++ | тесты, код, задания

Библиотека задач по C++ | тесты, код, задания

Open in Telegram

Задачи и тесты по C++ для тренировки и обучения. Как запустить своего ии-агента: https://clc.to/tvpmDQ По рекламе: @proglib_adv Учиться у нас: https://proglib.io/w/7a480301 Для обратной связи: @proglibrary_feeedback_bot

Show more
5 708
Subscribers
-9324 hours
-6 8247 days
-14 23630 days
Posts Archive
Вывод типа шаблона (Template Type Deduction) ⚙️ Начиная с C++11 появилась возможность переложить вывод типа на компилятор — в
Вывод типа шаблона (Template Type Deduction) ⚙️ Начиная с C++11 появилась возможность переложить вывод типа на компилятор — вывод типа шаблона (Template Type Deduction) 🔥 Эта фича не только улучшает читаемость, но и делает код более устойчивым к изменениям. Если мы решим изменить тип вектора, нам не нужно изменять сигнатуру функции

std::allocator: современный способ управления памятью • C++ предоставляет стандартный класс std::allocator, который упрощает
std::allocator: современный способ управления памятью • C++ предоставляет стандартный класс std::allocator, который упрощает управление памятью, особенно при работе с контейнерами STL • О нём стоит помнить, потому что он передаётся по умолчанию в STL контейнеры

🧑‍💻 Статьи для IT: как объяснять и распространять значимые идеи Напоминаем, что у нас есть бесплатный курс для всех, кто хо
🧑‍💻 Статьи для IT: как объяснять и распространять значимые идеи Напоминаем, что у нас есть бесплатный курс для всех, кто хочет научиться интересно писать — о программировании и в целом. Что: семь модулей, посвященных написанию, редактированию, иллюстрированию и распространению публикаций. Для кого: для авторов, копирайтеров и просто программистов, которые хотят научиться интересно рассказывать о своих проектах. 👉Материалы регулярно дополняются, обновляются и корректируются. А еще мы отвечаем на все учебные вопросы в комментариях курса.

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

std::variant Это фича C++17, обеспечивающая типобезопасное объединение, позволяющее хранить и манипулировать значениями разны
std::variant Это фича C++17, обеспечивающая типобезопасное объединение, позволяющее хранить и манипулировать значениями разных типов в одном объекте. Она является частью стандартной библиотеки C++ и определена в заголовке . Шаблонный класс std::variant похож на упрощенную версию union, но с дополнительной безопасностью типов и поддержкой различных операций. Основными функциями std::variant являются index(), valueless_by_exception(), operator=, emplace. В этом примере мы создаем объект var, который может содержать значения типов int, float или std::string. Мы присваиваем var различные значения и получаем их с помощью std::get. Однако если мы попытаемся получить значение, используя неправильный тип (например, std::get(var), когда вариант содержит std::string), это вызовет исключение std::bad_variant_access.

Ссылочный и переменный указатель. В чём разница? Ссылочный указатель — это ссылка на объект. Ссылочный указатель не хранит ад
Ссылочный и переменный указатель. В чём разница? Ссылочный указатель — это ссылка на объект. Ссылочный указатель не хранит адрес объекта, а сам является ссылкой на объект. Ссылочный указатель всегда ссылается на один и тот же объект, даже если его значение изменится. Переменный указатель — это указатель на объект. Переменный указатель хранит адрес объекта. Значение переменного указателя может быть изменено, и в этом случае указатель будет ссылаться на другой объект.

Форматирование текста в С++20 std::format — это функция форматирования текста, которая появилась в C++20. Она предлагает безо
Форматирование текста в С++20 std::format — это функция форматирования текста, которая появилась в C++20. Она предлагает безопасную и расширяемую альтернативу семейству функций printf. Эта функция предназначена для дополнения существующей библиотеки C++ I/O streams. В этом примере мы используем std::format для форматирования строки «Hello, {}!», где {} является заполнителем для аргумента «world». Результатом работы этого кода будет строка «Hello, world!», которая выводится на экран с помощью std::cout.

Какие специальные функции-члены может генерировать сам компилятор? Напишите их сигнатуру? Ответ: Компилятор может сам генерировать шесть функций. • Конструктор по умолчанию; Object(); • деструктор; ~Object(); • копирующий конструктор; Object(const Object& oth); • оператор копирующего присваивания; Object& operator=(const Object& oth); • перемещающий конструктор; Object(Object&& oth); • оператор перемещающего присваивания; Object& operator=(Object&& oth);

Memory leak (утечка памяти) — это ситуация, при которой программа использует динамическую память, но забывает освободить эту
Memory leak (утечка памяти) — это ситуация, при которой программа использует динамическую память, но забывает освободить эту память перед завершением работы или перед повторным использованием. Как результат, выделенная память остается занята в оперативной памяти, несмотря на то, что она уже не используется, и таким образом происходит утечка памяти. Утечка памяти может привести к постепенному увеличению объема занятой оперативной памяти программой. Если утечка продолжает развиваться, это может привести к уменьшению производительности программы и даже к завершению программы из-за нехватки доступной памяти.

👩‍💻 Как разработчику на С++ оптимизировать работу? Расскажет Александр Ключев — руководитель команды разработки в «Новые об
👩‍💻 Как разработчику на С++ оптимизировать работу? Расскажет Александр Ключев — руководитель команды разработки в «Новые облачные технологии». Встречаемся на бесплатном практическом уроке «Вычисления на этапе компиляции в языке C++» от OTUS. На вебинаре вы: ⬇️ узнаете, как выполнять часть работы программ на С++ за счет вычислений на этапе компиляции; ⬇️ научитесь делать вычисления с помощью шаблонов, constexpr функций и замыканий; ⬇️ познакомитесь с другими полезными инструментами, которые можно использовать на этапе компиляции программ. 🤝 Встречаемся 1 февраля в 20:00 мск в рамках курса «C++ Developer. Professional». Доступна рассрочка на обучение! ➡️ Пройдите короткий тест прямо сейчас, чтобы посетить бесплатный урок и получить запись: https://otus.ru/lessons/cpp-professional/?utm_source=telegram&utm_medium=cpm&utm_campaign=cplus&utm_term=cpp_problems_lib&utm_content=lesson-01-02-2024#event-3833 Реклама. ООО «Отус онлайн-образование», ОГРН 1177746618576 Erid 2VtzqviBi3g

Сколько раз будет выполняться этот цикл? Если бы вы сказали 300, а i был объявлен как int, вы были бы правы. Но поскольку i о
Сколько раз будет выполняться этот цикл? Если бы вы сказали 300, а i был объявлен как int, вы были бы правы. Но поскольку i объявлен как unsigned char, правильный ответ — зацикливание (бесконечный цикл). Объясняем. Выражение 2 * half_limit будет повышаться до int (на основе правил преобразования C++) и заимеет значение 300. Но так как i — это unsigned char, он пересматривается по 8-битному значению, которое после достижения 255 будет переполняться, поэтому вернется к 0, и цикл будет продолжаться вечно.

memmove Функция memmove используется для копирования блока памяти из одного места в другое. Она объявлена в заголовочном файл
memmove Функция memmove используется для копирования блока памяти из одного места в другое. Она объявлена в заголовочном файле . Она принимает аргументы типа void * и const void *, что позволяет ей работать с любыми типами данных. Она просто копирует указанное количество байтов из исходного буфера в целевой. memmove может обрабатывать перекрывающиеся буферы. В отличие от memcpy, которая просто копирует данные из одного места в другое, memmove может безопасно перемещать данные, даже если исходный и целевой буферы перекрываются. Функция memmove может быть полезна для удаления элементов из массива. Например, если вы хотите удалить элемент из массива и сдвинуть оставшиеся элементы влево, вы можете использовать memmove для перемещения данных в массиве.

Что за оператор −−> в С++? Это старый хитрый вопрос. В С++ нет оператора −−>. Рассмотрим такой код: if (p−−>m == 0) f(p); Выглядит так, как будто и правда есть оператор −−>, и если правильно объявить переменные p и m, то код даже скомпилируется и запустится: int p = 2; int m = 0; if (p−−>m == 0) f(p); Это означает: если p−− больше чем m (а это так), то надо сравнить результат (true) с нулём. Ну, true != 0, так что результат всего выражения — false, и функция f() не вызовется. Другими словами: if ((p−−) > m == 0) f(p); Пожалуйста, не тратьте много времени на подобные вопросы. Они сбивали с толку новичков ещё до того, как появился С++.

std::variant Это фича C++17, обеспечивающая типобезопасное объединение, позволяющее хранить и манипулировать значениями разны
std::variant Это фича C++17, обеспечивающая типобезопасное объединение, позволяющее хранить и манипулировать значениями разных типов в одном объекте. Она является частью стандартной библиотеки C++ и определена в заголовке . Шаблонный класс std::variant похож на упрощенную версию union, но с дополнительной безопасностью типов и поддержкой различных операций. Основными функциями std::variant являются index(), valueless_by_exception(), operator=, emplace. В этом примере мы создаем объект var, который может содержать значения типов int, float или std::string. Мы присваиваем var различные значения и получаем их с помощью std::get. Однако если мы попытаемся получить значение, используя неправильный тип (например, std::get(var), когда вариант содержит std::string), это вызовет исключение std::bad_variant_access.

Что делает данный код? Правильный ответ: ничего не делает. int main() // Функция main без аргументов. { [] // Объявление лямб
Что делает данный код? Правильный ответ: ничего не делает. int main() // Функция main без аргументов. { [] // Объявление лямбда-функции без списка захвата... () // ... с пустым списком аргументов ... {} // ... и пустым телом, ... (); // ... которая тут же вызывается. }

Что выведет код?
Anonymous voting

Что выведет код сверху?
Anonymous voting