std::array
Definido en la cabecera <array>
|
||
template< class T, |
(desde C++11) | |
std::array
es un contenedor que encapsula arrays de tamaño fijo.
Este contenedor es un tipo agregado con las mismas semánticas que una estructura que mantiene un
This container is an aggregate type with the same semantics as a struct holding a array estilo C T[N] como su único miembro no estático. A diferencia de un array estilo C, no decae a T* automaticamente. Como tipo agregado, puede ser inicializado con inicialización agregada dados como mucho N
inicializadores los cuales son convertibles a T
: std::array<int, 3> a = {1,2,3};.
La estructura combina el rendimiento y la accesibilidad de un array estilo C con los beneficios de un contenedor estándar, tales como el conocimiento de su propio tamaño, soportando asignación, iteradores de acceso aleatorio, etc.
std::array
satisface los requerimientos de Contenedor
y ContenedorReversible
. Con excepción de que un array construido por defecto no está vacio y que la complejidad de intercambio es lineal, satisface los requerimientos de Plantilla:rev inl y satisface parcialmente los requerimientos de ContenedorSecuencial
.
Hay un caso especial para los arrays de longitud cero (N == 0
). En tal caso, array.begin() == array.end(), el cual es un valor único. El efecto de llamar front() o back() en un array de tamaño cero no está definido.
Un array también puede ser usado como una tupla de N
elementos del mismo tipo.
Contenido |
[editar] Invalidación de iteradores
Como regla, iteradores a un array nunca son invalidados durante la vida del array. Hay que tomar nota, sin embargo, que durante swap, el iterador continuará apuntando al objeto del mismo array, y por consecuente cambiará su valor.
[editar] Tipos miembros
Tipo miembro | Definición |
value_type
|
T
|
size_type
|
size_t |
difference_type
|
ptrdiff_t |
reference
|
value_type&
|
const_reference
|
const value_type&
|
pointer
|
T*
|
const_pointer
|
const T*
|
iterator
|
RandomAccessIterator
|
const_iterator
|
Iterador constante de acceso aleatorio
Original: Constant random access iterator The text has been machine-translated via Google Translate. You can help to correct and verify the translation. Click here for instructions. |
reverse_iterator
|
std::reverse_iterator<iterator> |
const_reverse_iterator
|
std::reverse_iterator<const_iterator> |
[editar] Funciones miembro
Funciones miembro implícitamente definidas | |
(constructor) (implícitamente declarado) |
inicializa el array siguiendo las reglas de inicialización agregada (la inicialización por defecto puede resultar en valores indeterminados para T que no sean clases) (función miembro público) |
(destructor) (implícitamente declarado) |
destruye cada elemento del array (función miembro público) |
operator= (implícitamente declarado) |
sobrescribe cada elemento del array con el correspondiente elemento de otro array (función miembro público) |
Acceso a elementos | |
acceder al elemento especificado con comprobación de límites Original: access specified element with bounds checking The text has been machine-translated via Google Translate. You can help to correct and verify the translation. Click here for instructions. (función miembro público) | |
acceder al elemento especificado Original: access specified element The text has been machine-translated via Google Translate. You can help to correct and verify the translation. Click here for instructions. (función miembro público) | |
acceso al primer elemento Original: access the first element The text has been machine-translated via Google Translate. You can help to correct and verify the translation. Click here for instructions. (función miembro público) | |
access the last element (función miembro público) | |
(C++11) |
dirigir el acceso a la matriz subyacente Original: direct access to the underlying array The text has been machine-translated via Google Translate. You can help to correct and verify the translation. Click here for instructions. (función miembro público) |
Iteradores | |
devuelve un iterador al principio Original: returns an iterator to the beginning The text has been machine-translated via Google Translate. You can help to correct and verify the translation. Click here for instructions. (función miembro público) | |
devuelve un iterador hasta el final Original: returns an iterator to the end The text has been machine-translated via Google Translate. You can help to correct and verify the translation. Click here for instructions. (función miembro público) | |
devuelve un iterador inverso al principio Original: returns a reverse iterator to the beginning The text has been machine-translated via Google Translate. You can help to correct and verify the translation. Click here for instructions. (función miembro público) | |
devuelve un iterador inverso hasta el final Original: returns a reverse iterator to the end The text has been machine-translated via Google Translate. You can help to correct and verify the translation. Click here for instructions. (función miembro público) | |
Capacidad | |
comprueba si el recipiente está vacío Original: checks whether the container is empty The text has been machine-translated via Google Translate. You can help to correct and verify the translation. Click here for instructions. (función miembro público) | |
devuelve el número de elementos Original: returns the number of elements The text has been machine-translated via Google Translate. You can help to correct and verify the translation. Click here for instructions. (función miembro público) | |
devuelve el número máximo posible de elementos Original: returns the maximum possible number of elements The text has been machine-translated via Google Translate. You can help to correct and verify the translation. Click here for instructions. (función miembro público) | |
Operaciones | |
llenar el recipiente con el valor especificado Original: fill the container with specified value The text has been machine-translated via Google Translate. You can help to correct and verify the translation. Click here for instructions. (función miembro público) | |
intercambia los contenidos Original: swaps the contents The text has been machine-translated via Google Translate. You can help to correct and verify the translation. Click here for instructions. (función miembro público) |
[editar] Funciones no miembro
lexicográficamente compara los valores del array Original: lexicographically compares the values in the array The text has been machine-translated via Google Translate. You can help to correct and verify the translation. Click here for instructions. (plantilla de función) | |
accesses an element of an array (plantilla de función) | |
el algoritmo se especializa std::swap Original: specializes the std::swap algorithm The text has been machine-translated via Google Translate. You can help to correct and verify the translation. Click here for instructions. (plantilla de función) |
[editar] Clases auxiliares
obtiene el tamaño de un array Original: obtains the size of an array The text has been machine-translated via Google Translate. You can help to correct and verify the translation. Click here for instructions. (especialización de plantilla de clase) | |
se obtiene el tipo de los elementos de array Original: obtains the type of the elements of array The text has been machine-translated via Google Translate. You can help to correct and verify the translation. Click here for instructions. (especialización de plantilla de clase) |
[editar] Deduction guides(desde C++17)
[editar] Ejemplo
#include <string> #include <iterator> #include <iostream> #include <algorithm> #include <array> int main() { // la construcción usa inicialización agregada std::array<int, 3> a1{ {1, 2, 3} }; // llaves dobles requeridas en C++11 (no en C++14) std::array<int, 3> a2 = {1, 2, 3}; // nunca requerido despues de = std::array<std::string, 2> a3 = { std::string("a"), "b" }; // soporta las operaciones de contenedor std::sort(a1.begin(), a1.end()); std::reverse_copy(a2.begin(), a2.end(), std::ostream_iterator<int>(std::cout, " ")); std::cout << '\n'; // soporta bucle de rangos for for(const auto& s: a3) std::cout << s << ' '; }
Salida:
3 2 1 a b