Telegram Group & Telegram Channel
📌 Оптимизация кода с std::optional в C++

Привет, друзья! Сегодня поговорим про std::optional — мощный инструмент, который делает код чище и безопаснее.

💡 Зачем нужен std::optional?
Обычно, если функция не может вернуть корректное значение, приходится использовать:
Возвращаемое значение с ошибочным кодом (неудобно, особенно если 0 или -1 могут быть валидными).
Выброс исключения (дорого по ресурсам).
Указатели (nullptr, но требует дополнительных проверок).

🔥 Альтернатива? Используем std::optional!


#include <iostream>
#include <optional>
#include <string>

std::optional<std::string> findUser(int id) {
if (id == 42) return "John Doe";
return std::nullopt;
}

int main() {
auto user = findUser(42);

if (user) {
std::cout << "User found: " << *user << std::endl;
} else {
std::cout << "User not found!" << std::endl;
}
}

Код стал чище: нет лишних проверок nullptr, исключений или специальных значений.

🎯 Когда использовать?
🔹 Когда функция может вернуть "ничего", но исключения и специальные значения не подходят.
🔹 Для более понятного API (например, парсинг строки в число).
🔹 Когда важно избежать неопределенного состояния (например, с переменной внутри класса).

А ты уже используешь std::optional в своем коде? Делись опытом в комментариях! 🔍

➡️ @cpp_geek



tg-me.com/cpp_geek/283
Create:
Last Update:

📌 Оптимизация кода с std::optional в C++

Привет, друзья! Сегодня поговорим про std::optional — мощный инструмент, который делает код чище и безопаснее.

💡 Зачем нужен std::optional?
Обычно, если функция не может вернуть корректное значение, приходится использовать:
Возвращаемое значение с ошибочным кодом (неудобно, особенно если 0 или -1 могут быть валидными).
Выброс исключения (дорого по ресурсам).
Указатели (nullptr, но требует дополнительных проверок).

🔥 Альтернатива? Используем std::optional!


#include <iostream>
#include <optional>
#include <string>

std::optional<std::string> findUser(int id) {
if (id == 42) return "John Doe";
return std::nullopt;
}

int main() {
auto user = findUser(42);

if (user) {
std::cout << "User found: " << *user << std::endl;
} else {
std::cout << "User not found!" << std::endl;
}
}

Код стал чище: нет лишних проверок nullptr, исключений или специальных значений.

🎯 Когда использовать?
🔹 Когда функция может вернуть "ничего", но исключения и специальные значения не подходят.
🔹 Для более понятного API (например, парсинг строки в число).
🔹 Когда важно избежать неопределенного состояния (например, с переменной внутри класса).

А ты уже используешь std::optional в своем коде? Делись опытом в комментариях! 🔍

➡️ @cpp_geek

BY C++ geek


Warning: Undefined variable $i in /var/www/tg-me/post.php on line 283

Share with your friend now:
tg-me.com/cpp_geek/283

View MORE
Open in Telegram


telegram Telegram | DID YOU KNOW?

Date: |

China’s stock markets are some of the largest in the world, with total market capitalization reaching RMB 79 trillion (US$12.2 trillion) in 2020. China’s stock markets are seen as a crucial tool for driving economic growth, in particular for financing the country’s rapidly growing high-tech sectors.Although traditionally closed off to overseas investors, China’s financial markets have gradually been loosening restrictions over the past couple of decades. At the same time, reforms have sought to make it easier for Chinese companies to list on onshore stock exchanges, and new programs have been launched in attempts to lure some of China’s most coveted overseas-listed companies back to the country.

telegram from de


Telegram C++ geek
FROM USA