РЕПЕТИТОР математика физика информатика
Для школьников и студентов. Подтягивание пробелов. ЦЭ, ЦТ, ОГЭ, ЕГЭ.
Идет набор на ЛЕТО. Жмите для подробностей:)
440 of 815 menu

Класс optional

Класс optional представляет собой контейнер, который может хранить значение некоторого типа или находиться в пустом состоянии. Это удобная альтернатива использованию указателей и специальных значений вроде -1 для обозначения отсутствия результата. В параметр шаблона мы передаем тип значения, которое будет храниться внутри контейнера.

Синтаксис

#include <optional> std::optional<T> opt; std::optional<T> opt(value);

Пример

Давайте создадим объект optional без значения и проверим, содержит ли он что-либо:

#include <iostream> #include <optional> using namespace std; int main() { optional<int> opt; if (opt.has_value()) { cout << "Has value" << endl; } else { cout << "Empty" << endl; } return 0; }

Результат выполнения кода:

"Empty"

Пример

Давайте создадим объект optional со значением 123 и выведем его на экран:

#include <iostream> #include <optional> using namespace std; int main() { optional<int> opt = 123; if (opt.has_value()) { cout << opt.value() << endl; } return 0; }

Результат выполнения кода:

123

Пример

Давайте воспользуемся методом value_or, чтобы получить значение по умолчанию, если контейнер пуст:

#include <iostream> #include <optional> using namespace std; int main() { optional<int> opt; cout << opt.value_or(0) << endl; return 0; }

Результат выполнения кода:

0

Смотрите также

  • метод value,
    который возвращает хранимое значение
  • метод value_or,
    который возвращает значение или альтернативу
  • метод has_value,
    который проверяет наличие значения
  • метод reset,
    который очищает контейнер
Мы используем cookie для работы сайта, аналитики и персонализации. Обработка данных происходит согласно Политике конфиденциальности.
принять все настроить отклонить