С++ задачи и вопросы
561 subscribers
565 photos
4 files
209 links
Задачи, тесты и теоретические вопросы по С++

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

Как функционируют исключения без затрат в C++ и почему они считаются эффективными?

Ответ ⬇️
Исключения без затрат означают, что в процессе обычного выполнения программы исключения не оказывают влияния на производительность. Вместо проверок компилятор создает специальные таблицы (.eh_frame в ELF), которые используются только в случае выброса исключения. В отличие от проверок ошибок с помощью if, исключения в C++ не замедляют выполнение кода, пока не произойдет ошибка.

Пример использования ⚙️
#include
#include

void risky() { throw std::runtime_error("Ошибка!"); }

int main() {
try { risky(); }
catch (const std::exception& e) { std::cout
@quizcpp
🔥1
Вопрос на собеседовании

Что представляют собой корутины в C++ и как они функционируют?

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

Корутины в C++ используют ключевые слова co_await, co_yield и co_return, а также требуют специального механизма возврата (std::generator, std::future, std::promise).

Пример использования ⚙️
#include
#include

struct Task {
struct promise_type {
Task get_return_object() { return {}; }
std::suspend_never initial_suspend() { return {}; }
std::suspend_never final_suspend() noexcept { return {}; }
void return_void() {}
void unhandled_exception() {}
};
};

Task myCoroutine() {
std::cout
@quizcpp