Namespaces
Variants

std:: from_range, std:: from_range_t

From cppreference.net
Ranges library
Range adaptors
Definido en el encabezado <ranges>
struct from_range_t { explicit from_range_t ( ) = default ; } ;
(desde C++23)
inline constexpr std :: from_range_t from_range { } ;
(desde C++23)

std::from_range es una etiqueta de desambiguación que puede pasarse a los constructores de los contenedores apropiados para indicar que el miembro contenido se construye mediante rango.

El tipo correspondiente std::from_range_t puede utilizarse en la lista de parámetros del constructor para coincidir con la etiqueta prevista.

Contenidos

Biblioteca estándar

Los siguientes tipos de la biblioteca estándar utilizan std::from_range_t en sus constructores:

Biblioteca de contenedores
construye el vector desde un rango
(función miembro pública de std::vector<T,Allocator> )
construye el inplace_vector a partir de un rango
(función miembro pública de std::inplace_vector<T,N> )
construye el hive desde un rango
(función miembro pública de Template:cpp/container/hive/title )
construye el deque desde un rango
(función miembro pública de std::deque<T,Allocator> )
construye el forward_list a partir de un rango
(función miembro pública de std::forward_list<T,Allocator> )
construye el list a partir de un rango
(función miembro pública de std::list<T,Allocator> )
construye el set a partir de un rango
(función miembro pública de std::set<Key,Compare,Allocator> )
construye el map desde un rango
(función miembro pública de std::map<Key,T,Compare,Allocator> )
construye el multiset a partir de un rango
(función miembro pública de std::multiset<Key,Compare,Allocator> )
construye el multimap desde un rango
(función miembro pública de std::multimap<Key,T,Compare,Allocator> )
construye el unordered_set a partir de un rango
(función miembro pública de std::unordered_set<Key,Hash,KeyEqual,Allocator> )
construye el unordered_map a partir de un rango
(función miembro pública de std::unordered_map<Key,T,Hash,KeyEqual,Allocator> )
construye el unordered_multiset a partir de un rango
(función miembro pública de std::unordered_multiset<Key,Hash,KeyEqual,Allocator> )
construye el unordered_multimap a partir de un rango
(función miembro pública de std::unordered_multimap<Key,T,Hash,KeyEqual,Allocator> )
construye el priority_queue a partir de un rango
(función miembro pública de std::priority_queue<T,Container,Compare> )
construye el queue desde un rango
(función miembro pública de std::queue<T,Container> )
construye el stack desde un rango
(función miembro pública de std::stack<T,Container> )
construye el flat_set a partir de un rango
(función miembro pública de std::flat_set<Key,Compare,KeyContainer> )
construye el flat_map a partir de un rango
(función miembro pública de std::flat_map<Key,T,Compare,KeyContainer,MappedContainer> )
construye el flat_multiset a partir de un rango
(función miembro pública de std::flat_multiset<Key,Compare,KeyContainer> )
construye el flat_multimap a partir de un rango
(función miembro pública de std::flat_multimap<Key,T,Compare,KeyContainer,MappedContainer> )
Biblioteca de cadenas
construye el basic_string desde un rango
(función miembro pública de std::basic_string<CharT,Traits,Allocator> )

Notas

Macro de prueba de características Valor Std Característica
__cpp_lib_containers_ranges 202202L (C++23) Constructores etiquetados para construir desde rango compatible con contenedor

Ejemplo

#include <cassert>
#include <string>
int main()
{
#ifdef __cpp_lib_containers_ranges
    auto const range = {0x43, 43, 43};
    std::string str{std::from_range, range}; // utiliza constructor etiquetado
    assert(str == "C++");
#endif
}

Véase también

etiqueta de construcción in-situ
(etiqueta)
indica que los elementos de un rango están ordenados (no se requiere unicidad)
(etiqueta)
indica que los elementos de un rango están ordenados y son únicos
(etiqueta)
(C++23)
construye un nuevo objeto no-vista a partir de un rango de entrada
(plantilla de función)