Namespaces
Variants

std::optional<T>:: begin

From cppreference.net
Utilities library
constexpr iterator begin ( ) noexcept ;
(desde C++26)
constexpr const_iterator begin ( ) const noexcept ;
(desde C++26)

Si * this contiene un valor, devuelve un iterador al valor contenido. De lo contrario, un valor de iterador pasado el final.

range-begin-end.svg

Contenidos

Valor de retorno

Iterador al valor contenido si has_value ( ) es true . De lo contrario, un iterador pasado-el-final.

Complejidad

Constante.

Notas

Macro de prueba de características Valor Estándar Característica
__cpp_lib_optional_range_support 202406L (C++26) Soporte de rangos para std::optional

Ejemplo

#include <optional>
#include <print>
#include <vector>
int main()
{
    constexpr std::optional<int> none{std::nullopt};
    constexpr std::optional<int> some{42};
    static_assert(none.begin() == none.end());
    static_assert(some.begin() != some.end());
    // soporte para bucle for basado en rangos
    for (int i : none)
        std::println("'none' tiene un valor de {}", i);
    for (int i : some)
        std::println("'some' tiene un valor de {}", i);
    std::optional<std::vector<int>> many({0, 1, 2});
    for (const auto& v : many)
        std::println("'many' tiene un valor de {}", v);
}

Salida:

'some' tiene un valor de 42
'many' tiene un valor de [0, 1, 2]

Véase también

(C++26)
devuelve un iterador al final
(función miembro pública)