[ Web Proxy ]
URL:
Viewing: http://es.cppreference.com/cpp/container/deque [Back]  [Original]

std::deque - cppreference.com
cppreference.com
Espacios de nombres
Variantes

std::deque

De cppreference.com
 
 
 
 
Definido en el archivo de encabezado <deque>
template<
    class T,
    class Allocator = std::allocator<T>
> class deque;
(1)
namespace pmr {
    template <class T>
    using deque = std::deque<T, std::pmr::polymorphic_allocator<T>>;
}
(2) (desde C++17)

std::deque (cola doblemente terminada) es un contenedor de secuencia indexada que permite una rpida insercin y eliminacin tanto al principio como al final. Adems, la insercin y eliminacin en cualquier extremo de una cola doblemente terminada nunca invalida los punteros o referencias al resto de los elementos.

A diferencia de std::vector, los elementos de una cola doblemente terminada no se almacenan contiguamente: las implementaciones tpicas usan una secuencia de arrays de tamao fijo asignados individualmente, con contabilidad adicional, lo que significa que el acceso indexado a una cola doblemente terminada debe realizar dos desreferencias de puntero, en comparacin con el acceso indexado del vector, que realiza solo una.

El almacenamiento de un deque se expande y contrae automticamente segn sea necesario. La expansin de una deque es ms barata que la expansin de un std::vector porque no implica copiar los elementos existentes a una nueva ubicacin de memoria. Por otro lado, las colas doblemente terminadas suelen tener un gran coste de memoria mnimo; una cola doblemente terminada que contiene solo un elemento tiene que asignar su array interno complet (por ejemplo, 8 veces el tamao del objeto en libstdc++ de 64 bits; 16 veces el tamao del objeto o 4096 bytes, lo que sea mayor, en libc++ de 64 bits).

La complejidad (eficiencia) de las operaciones comunes sobre colas doblemente terminadas es la siguiente:

  • Acceso aleatorio - constante O(1).
  • Insercin o eliminacin de elementos al final o al comienzo - constante O(1).
  • Insercin o eliminacin de elementos - lineal O(n).

std::deque cumple con los requerimientos de Contenedor, ContenedorConscienteDeAsignador, ContenedorDeSecuencia y ContenedorReversible.

Parmetros de plantilla

T - El tipo de los elementos.
T debe cumplir con los requisitos de AsignablePorCopia y ConstruiblePorCopia. (hasta C++11)
Los requisitos que se imponen a los elementos dependen de las operaciones actuales realizadas en el contenedor. Generalmente, se requiere que el tipo de elemento sea un tipo completo y cumpla con los requisitos de Borrable, pero muchas funciones miembro imponen requisitos ms estrictos. (desde C++11)

[editar]

Allocator - Un asignador que se usa para adquirir y liberar memoria, y para construir y destruir los elementos en esa memoria. El tipo debe cumplir con los requisitos de Asignador. El comportamiento no est definido si Allocator::value_type no es el mismo que T. [editar]

Invalidacin de iteradores

Todava hay algunas inexactitudes en esta seccin, consulta las pginas de funciones miembro individuales para obtener ms detalles.

Operaciones Invalidado
Todas las operaciones de solo lectura Nunca
swap, std::swap El iterador despus del final puede invalidarse (definido por la implementacin)
shrink_to_fit, clear, insert, emplace, push_front,
push_back, emplace_front, emplace_back
Siempre
erase Si se borra al principio - solo los elementos borrados

Si se borra al final - solo los elementos borrados y el iterador despus del final
De lo contrario - todos los iteradores se invalidan (incluyendo el iterador despus del final).

resize Si el nuevo tamao es ms pequeo que el anterior: solo los elementos borrados y el
iterador despus del final

Si el nuevo tamao es ms grande que el anterior: todos los iteradores se invalidan
De lo contrario - ninguno de los iteradores se invalida.

pop_front Solo para el elemento borrado
pop_back Solo para el elemento borrado y el iterador despus del final.

Notas de invalidacin

  • Al insertar en cualquier extremidad de la cola doblemente terminada, las referencias no se invalidan por insert y emplace.
  • push_front, push_back, emplace_front y emplace_back no invalidan ninguna referencia a los elementos de la cola doblemente terminada.
  • Al borrar en cualquier extremidad de la cola doblemente terminada, las referencias a los elementos no borrados no se invalidan por erase, pop_front y pop_back.
  • Una llamada a resize con un tamao ms pequeo no invalida ninguna referencia a los elementos no borrados.
  • Una llamada a resize con un tamao ms grande no invalida ninguna referencia a los elementos de la cola doblemente terminada.

Tipos miembro

Tipo miembro Definicin
value_type T [editar]
allocator_type Allocator [editar]
size_type Tipo entero sin signo (por lo general std::size_t) [editar]
difference_type Tipo entero con signo (por lo general std::ptrdiff_t) [editar]
reference Allocator::reference (hasta C++11)
value_type& (desde C++11) [editar]
const_reference Allocator::const_reference (hasta C++11)
const value_type& (desde C++11) [editar]
pointer Allocator::pointer (hasta C++11)
std::allocator_traits<Allocator>::pointer (desde C++11) [editar]
const_pointer Allocator::const_pointer (hasta C++11)
std::allocator_traits<Allocator>::const_pointer (desde C++11) [editar]
iterator IteradorDeAccesoAleatorioLegado [editar]
const_iterator IteradorDeAccesoAleatorioLegado constante [editar]
reverse_iterator std::reverse_iterator<iterator> [editar]
const_reverse_iterator std::reverse_iterator<const_iterator> [editar]

Funciones miembro

Construye el contenedor deque.
(funcin miembro pblica) [editar]
Destruye el contenedor deque.
(funcin miembro pblica) [editar]
Asigna valores al contenedor.
(funcin miembro pblica) [editar]
Asigna valores al contenedor.
(funcin miembro pblica) [editar]
Asigna un rango de valores al contenedor.
(funcin miembro pblica) [editar]
Devuelve el asignador de memoria asociado.
(funcin miembro pblica) [editar]
Acceso a elementos
Accede al elemento especificado con comprobacin de lmites.
(funcin miembro pblica) [editar]
Accede el elemento especificado.
(funcin miembro pblica) [editar]
Accede al primer elemento.
(funcin miembro pblica) [editar]
Accede al ltimo elemento.
(funcin miembro pblica) [editar]
Iteradores
Devuelve un iterador al principio.
(funcin miembro pblica) [editar]
(C++11)
Devuelve un iterador al final.
(funcin miembro pblica) [editar]
Devuelve un iterador inverso al principio.
(funcin miembro pblica) [editar]
Devuelve un iterador inverso al final.
(funcin miembro pblica) [editar]
Capacidad
Comprueba si el contenedor est vaco.
(funcin miembro pblica) [editar]
Devuelve el nmero de elementos.
(funcin miembro pblica) [editar]
Devuelve el nmero mximo posible de elementos.
(funcin miembro pblica) [editar]
Reduce el uso de memoria liberando memoria no utilizada.
(funcin miembro pblica) [editar]
Modificadores
Borra el contenido.
(funcin miembro pblica) [editar]
Inserta elementos
(funcin miembro pblica) [editar]
Inserta un rango de elementos.
(funcin miembro pblica) [editar]
(C++11)
Construye el elemento en el sitio.
(funcin miembro pblica) [editar]
Borra elementos
(funcin miembro pblica) [editar]
Agrega elementos al final.
(funcin miembro pblica) [editar]
Construye un elemento en el sitio al final.
(funcin miembro pblica) [editar]
Agrega un rango de elementos al final.
(funcin miembro pblica) [editar]
Remueve el ltimo elemento.
(funcin miembro pblica) [editar]
Inserta un elemento al principio del contenedor.
(funcin miembro pblica) [editar]
Construye un elemento en el sitio al principio del contenedor.
(funcin miembro pblica) [editar]
Agrega un rango de elementos al principio.
(funcin miembro pblica) [editar]
Remueve el primer elemento.
(funcin miembro pblica) [editar]
Cambia el nmero de elementos almacenados.
(funcin miembro pblica) [editar]
Intercambia el contenido.
(funcin miembro pblica) [editar]

Funciones no miembro

(eliminado en C++20)(eliminado en C++20)(eliminado en C++20)(eliminado en C++20)(eliminado en C++20)(C++20)
Compara lexicogrficamente los valores de deque.
(plantilla de funcin) [editar]
Especializa el algoritmo std::swap.
(plantilla de funcin) [editar]
Borra todos los elementos que satisfacen un criterio especfico.
(plantilla de funcin) [editar]

Guas de deduccin(desde C++17)

Ejemplo

#include <iostream>
#include <deque>

int main()
{
    // Crear cola doblemente terminada que contiene enteros
    std::deque<int> d = {7, 5, 16, 8};

    // Agregar un entero al principio y al final de la cola
    d.push_front(13);
    d.push_back(25);

    // Iterar e imprimir los valores en la cola
    for(int n : d) {
        std::cout << n << '\n';
    }
}

Salida:

13
7
5
16
8
25

Vase tambin

Adapta un contenedor para proporcionar una cola (estructura de datos PEPS o FIFO, del ingls first in, first out).
(plantilla de clase) [editar]

Web Proxy Viewer  |  New URL  |  Original Page