std::end, std::cend
| Definido en el encabezado <array>
|
||
| Definido en el encabezado <deque>
|
||
| Definido en el encabezado <flat_map>
|
(desde C++23) |
|
| Definido en el encabezado <flat_set>
|
(desde C++23) |
|
| Definido en el encabezado <forward_list>
|
||
| Definido en el encabezado <inplace_vector>
|
(desde C++26) |
|
| Definido en el encabezado <iterator>
|
||
| Definido en el encabezado <list>
|
||
| Definido en el encabezado <map>
|
||
| Definido en el encabezado <optional>
|
(desde C++26) |
|
| Definido en el encabezado <regex>
|
||
| Definido en el encabezado <set>
|
||
| Definido en el encabezado <span>
|
(desde C++20) |
|
| Definido en el encabezado <stacktrace>
|
(desde C++23) |
|
| Definido en el encabezado <string>
|
||
| Definido en el encabezado <string_view>
|
(desde C++17) |
|
| Definido en el encabezado <unordered_map>
|
||
| Definido en el encabezado <unordered_set>
|
||
| Definido en el encabezado <valarray>
|
||
| Definido en el encabezado <vector>
|
||
template< class C >
auto end( C& c ) -> decltype(c.end());
|
(1) | (desde C++11) (constexpr desde C++17) |
template< class C >
auto end( const C& c ) -> decltype(c.end());
|
(2) | (desde C++11) (constexpr desde C++17) |
template< class T, std::size_t N >
T* end( T (&array)[N] );
|
(3) | (desde C++11) (noexcept desde C++14) (constexpr desde C++14) |
template< class C >
constexpr auto cend( const C& c ) noexcept(/* see below */)
-> decltype(std::end(c));
|
(4) | (desde C++14) |
Devuelve un iterador al final (es decir, el elemento después del último elemento) del rango dado.
c.end(), que normalmente es un iterador una posición después del final de la secuencia representada por c.array.std::end(c), donde c siempre se trata como calificado como const.
Parámetros
| c | - |
un contenedor o vista con una función miembro
end
|
| array | - | un array de tipo arbitrario |
Valor de retorno
Excepciones
Sobrecargas
Sobrecargas personalizadas de
end
pueden proporcionarse para clases y enumeraciones que no exponen una función miembro
end()
adecuada, pero que pueden iterarse. Las siguientes sobrecargas ya están proporcionadas por la biblioteca estándar:
|
(C++11)
|
especializa
std::end
(plantilla de función) |
|
(C++11)
|
especializa
std::end
(plantilla de función) |
|
soporte para bucle for basado en rangos
(función) |
|
|
soporte para bucle for basado en rangos
(función) |
Similar al uso de
swap
(descrito en
Swappable
), el uso típico de la función
end
en contexto genérico es equivalente a
using
std
::
end
;
end
(
arg
)
;
, lo que permite que tanto las sobrecargas seleccionadas por
ADL
para tipos definidos por el usuario como las plantillas de función de la biblioteca estándar aparezcan en el mismo conjunto de sobrecargas.
template<typename Container, typename Function> void for_each(Container&& cont, Function f) { using std::begin; auto it = begin(cont); using std::end; auto end_it = end(cont); for (; it != end_it; ++it) f(*it); }
|
Las sobrecargas de
|
(desde C++20) |
Notas
Las sobrecargas que no son para arreglos reflejan exactamente el comportamiento de C :: end ( ) . Sus efectos pueden ser sorprendentes si la función miembro no tiene una implementación razonable.
std::cend
se introduce para la unificación de accesos a rangos de miembros y no miembros. Véase también
LWG issue 2128
.
Si
C
es una vista de constante superficial,
std::cend
puede devolver un iterador mutable. Este comportamiento es inesperado para algunos usuarios. Véase también
P2276
y
P2278
.
Ejemplo
#include <algorithm> #include <iostream> #include <vector> int main() { std::vector<int> v = {3, 1, 4}; if (std::find(std::begin(v), std::end(v), 5) != std::end(v)) std::cout << "Found a 5 in vector v!\n"; int w[] = {5, 10, 15}; if (std::find(std::begin(w), std::end(w), 5) != std::end(w)) std::cout << "Found a 5 in array w!\n"; }
Salida:
Found a 5 in array w!
Véase también
|
(C++11)
(C++14)
|
devuelve un iterador al inicio de un contenedor o array
(plantilla de función) |
|
(C++20)
|
devuelve un centinela que indica el final de un rango
(objeto de punto de personalización) |
|
(C++20)
|
devuelve un centinela que indica el final de un rango de solo lectura
(objeto de punto de personalización) |