Namespaces
Variants

Standard library header <experimental/ranges/range>

From cppreference.net
Standard library headers

Este encabezado es parte de la biblioteca ranges .

Contenidos

Conceptos de rango

Definido en el espacio de nombres std::experimental::ranges
especifica que un tipo es un rango, es decir, proporciona un iterador begin y un centinela end
(concepto)
especifica que un rango conoce su tamaño en tiempo constante
(concepto)
especifica que un rango es una vista, es decir, tiene operaciones de copia/movimiento/asignación en tiempo constante
(concepto)
especifica que un rango tiene tipos de iterador y centinela idénticos
(concepto)
especifica un rango cuyo tipo de iterador satisface InputIterator
(concepto)
especifica un rango cuyo tipo de iterador satisface OutputIterator
(concepto)
especifica un rango cuyo tipo de iterador satisface ForwardIterator
(concepto)
especifica un rango cuyo tipo de iterador satisface BidirectionalIterator
(concepto)
especifica un rango cuyo tipo de iterador satisface RandomAccessIterator
(concepto)

Acceso por rango

Definido en el espacio de nombres std::experimental::ranges
devuelve un iterador al inicio de un rango
(objeto de punto de personalización)
devuelve un iterador al final de un rango
(objeto de punto de personalización)
devuelve un iterador inverso a un rango
(objeto de punto de personalización)
devuelve un iterador final inverso a un rango
(objeto de punto de personalización)

Primitivas de rango

Definido en el espacio de nombres std::experimental::ranges
obtiene el tamaño de un rango cuyo tamaño puede calcularse en tiempo constante
(objeto de punto de personalización)
verifica si un rango está vacío
(objeto de punto de personalización)
obtiene un puntero al inicio de un rango contiguo
(objeto de punto de personalización)
obtiene los tipos de iterador y centinela de un rango
(plantilla de alias)

Sinopsis

#include <experimental/ranges/iterator>
namespace std { namespace experimental { namespace ranges { inline namespace v1 {
namespace {
  constexpr /* no especificado */ begin = /* no especificado */;
  constexpr /* no especificado */ end = /* no especificado */;
  constexpr /* no especificado */ cbegin = /* no especificado */;
  constexpr /* no especificado */ cend = /* no especificado */;
  constexpr /* no especificado */ rbegin = /* no especificado */;
  constexpr /* no especificado */ rend = /* no especificado */;
  constexpr /* no especificado */ crbegin = /* no especificado */;
  constexpr /* no especificado */ crend = /* no especificado */;
}
namespace {
  constexpr /* no especificado */ size = /* no especificado */;
  constexpr /* no especificado */ empty = /* no especificado */;
  constexpr /* no especificado */ data = /* no especificado */;
  constexpr /* no especificado */ cdata = /* no especificado */;
}
template <class T>
using iterator_t = decltype(ranges::begin(declval<T&>()));
template <class T>
using sentinel_t = decltype(ranges::end(declval<T&>()));
template <class>
constexpr bool disable_sized_range = false;
template <class T>
struct enable_view { };
struct view_base { };
template <class T>
concept bool Range = /* ver definición */;
template <class T>
concept bool SizedRange = /* ver definición */;
template <class T>
concept bool View = /* ver definición */;
template <class T>
concept bool BoundedRange = /* ver definición */;
template <class T>
concept bool InputRange = /* ver definición */;
template <class R, class T>
concept bool OutputRange = /* ver definición */;
template <class T>
concept bool ForwardRange = /* ver definición */;
template <class T>
concept bool BidirectionalRange = /* ver definición */;
template <class T>
concept bool RandomAccessRange = /* ver definición */;
}}}}