С++ задачи и вопросы
554 subscribers
585 photos
4 files
212 links
Задачи, тесты и теоретические вопросы по С++

Прислать задачу/вопрос в дар: @cyberJohnny
Сотрудничество: @cyberJohnny
Download Telegram
⚙️ std::uninitialized_default_construct_n

std::uninitialized_default_construct_n (C++17) вызывает default-конструкторы объектов в необработанном блоке памяти без инициализации значений. Это полезно при ручном управлении памятью и написании аллокаторов или контейнеров.

👩‍💻

@quizcpp
⚙️ std::to_address()

std::to_address() (C++20) извлекает обычный указатель из объекта-итератора или умного указателя. Это полезно для универсальной работы с памятью без зависимости от типа указателя.

👩‍💻

@quizcpp
⚙️ std::default_sentinel

std::default_sentinel (C++20) представляет универсальный конец диапазона и используется с пользовательскими итераторами и ranges. Это полезно для создания "открытых" и ленивых представлений данных.

👩‍💻

@quizcpp
⚙️ std::unexpected

std::unexpected (устаревший в C++17, но интересный исторически) используется для установки обработчика непредусмотренных исключений, выбрасываемых функциями с noexcept(false) или throw()-спецификацией. Полезно для отладки и контроля исключений в старом коде.

👩‍💻

@quizcpp
⚙️ std::launder

std::launder (C++17) используется для безопасного доступа к объекту после его повторной инициализации в той же памяти с помощью placement new. Это важно при низкоуровневых операциях, связанных с ручным управлением жизненным циклом объектов.

👩‍💻

@quizcpp
⚙️ std::clamp

std::clamp ограничивает значение в пределах заданного диапазона. Это полезно для валидации чисел, нормализации данных и защиты от выхода за границы.

👩‍💻

@quizcpp
⚙️ std::gcd

std::gcd вычисляет наибольший общий делитель (НОД) двух чисел. Это полезно для задач на делимость, сокращения дробей и численных алгоритмов.

👩‍💻

@quizcpp
👍1
⚙️ std::lcm

std::lcm вычисляет наименьшее общее кратное (НОК) двух чисел. Это полезно для задач на синхронизацию событий, работы с дробями и математических расчётов.

👩‍💻

@quizcpp
👍1
⚙️ std::iota

std::iota — алгоритм из библиотеки , который заполняет диапазон значениями, начиная с указанного стартового числа, увеличивая его на 1 для каждого следующего элемента.

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

👩‍💻

@quizcpp
🤔 Как это работает? — Передача аргументов в C++

В C++ аргументы функции можно передавать по значению, по ссылке и по константной ссылке. Эти подходы влияют на производительность и безопасность. Давайте разберём, как это работает.

➡️ Как это работает:

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

Развернутый аналог:
void modifyValue(const int &value) {
// value нельзя изменить
}

👩‍💻

@quizcpp
⚙️ std::ofstream

std::ofstream из заголовка используется для записи данных в файл. Это удобный инструмент для работы с файлами, позволяющий записывать текстовую или бинарную информацию.

👩‍💻

@quizcpp