Biblioteca estándar de C++<deque>
En C++,<deque>es parte de la Biblioteca de Plantillas Estándar (STL) y proporciona la implementación de una cola doblemente terminada (double-ended queue).
Una cola doblemente terminada es una estructura de datos lineal que permite operaciones de inserción y eliminación en ambos extremos.
<deque>su nombre completo es "double-ended queue", existe en C++ como una clase de plantilla y permite almacenar datos de cualquier tipo.
<deque>es un arreglo dinámico que proporciona capacidad de acceso aleatorio rápido y permite operaciones eficientes de inserción y eliminación en ambos extremos. Esto hace que<deque>sea una opción ideal para escenarios que requieren inserción y eliminación frecuente de elementos.
Sintaxis
En C++, para usar<deque>es necesario incluir el archivo de cabecera#include <deque>. A continuación se muestra<deque>la sintaxis básica de:
#include <iostream>
#include <deque>
int main() {
std::deque<int> myDeque; // 创建一个整数类型的双端队列
// 接下来可以进行插入、删除等操作
return 0;
}
Operaciones comunes
A continuación se muestran algunas funciones miembro comunes del contenedor std::deque:
| Nombre de la función | Descripción de la función |
|---|---|
deque() | Constructor por defecto, crea undequecontenedor vacío. |
deque(size_type n) | Crea un contenedor que contienenelementos con valor predeterminadodequecontenedor. |
deque(size_type n, const T& value) | Crea un contenedor que contienencuyo valor esvaluededequecontenedor. |
deque(initializer_list<T> il) | Usando una lista de inicializaciónilconstruir undequecontenedor. |
operator= | Operador de asignación, asigna adequeun contenedor. |
assign() | Reemplaza con nuevos valoresdequetodos los elementos del contenedor. |
at(size_type pos) | Devuelveposel elemento en la posición, y realiza verificación de límites. |
operator[](size_type pos) | Devuelveposel elemento en la posición, sin verificación de límites. |
front() | Devuelve una referencia al primer elemento. |
back() | Devuelve una referencia al último elemento. |
begin() | Devuelve un iterador que apunta al primer elemento. |
end() | Devuelve un iterador que apunta a la posición posterior al último elemento. |
rbegin() | Devuelve un iterador inverso que apunta al último elemento. |
rend() | Devuelve un iterador inverso que apunta a la posición anterior al primer elemento. |
empty() | Comprueba si el contenedor está vacío. |
size() | Devuelve el número de elementos del contenedor. |
max_size() | Devuelve el número máximo de elementos que puede contener el contenedor. |
clear() | Elimina todos los elementos del contenedor. |
insert(iterator pos, const T& value) | EnposInsertar en la posiciónvalueel elemento. |
erase(iterator pos) | Eliminaposel elemento en la posición. |
push_back(const T& value) | Añade al final del contenedorvalueel elemento. |
pop_back() | Elimina el elemento al final del contenedor. |
push_front(const T& value) | Añade al inicio del contenedorvalueel elemento. |
pop_front() | Elimina el elemento al inicio del contenedor. |
resize(size_type count) | Ajusta el tamaño del contenedor acount, y las partes sobrantes se rellenan con valores predeterminados. |
swap(deque& other) | Intercambia el contenido de dosdequecontenedores. |
get_allocator() | Devuelve una copia del objeto asignador utilizado para construir la cola doblemente terminada. |
Ejemplo
A continuación se muestra un ejemplo que usa<deque>incluyendo operaciones de inserción, acceso y eliminación de elementos.
Ejemplo
#include <deque>
int main() {
std::deque<int> myDeque;
// Insertar elementos
myDeque.push_back(10);
myDeque.push_back(20);
myDeque.push_front(5);
// Acceder a elementos
std::cout << "Deque contains: ";
for (int i = 0; i < myDeque.size(); ++i) {
std::cout << myDeque[i] << " ";
}
std::cout << std::endl;
// Eliminar elementos
myDeque.pop_back();
myDeque.pop_front();
// Volver a acceder a elementos
std::cout << "Deque after popping: ";
for (int i = 0; i < myDeque.size(); ++i) {
std::cout << myDeque[i] << " ";
}
std::cout << std::endl;
return 0;
}
Resultado de salida:
Deque contains: 5 10 20 Deque after popping: 10
Cuando no se conoce la longitud de deque, se pueden usar deque.front() y deque.back() para acceder a los elementos del frente y del final:
Ejemplo
#include <deque>
int main() {
std::deque<int> d;
// Añadir elementos a la cola doblemente terminada
d.push_back(10);
d.push_back(20);
d.push_front(5);
// Acceder al elemento frontal
std::cout << "Front element: " << d.front() << std::endl;
// Acceder al elemento posterior
std::cout << "Back element: " << d.back() << std::endl;
// Modificar el elemento frontal
d.front() = 15;
// Modificar el elemento posterior
d.back() = 25;
// Volver a acceder a los elementos
std::cout << "Modified front element: " << d.front() << std::endl;
std::cout << "Modified back element: " << d.back() << std::endl;
return 0;
}
El resultado de salida es:
Front element: 5 Back element: 20 Modified front element: 15 Modified back element: 25
Nota:Antes de usar front() o back(), asegúrate de que la cola doblemente terminada no esté vacía; de lo contrario, se provocará un comportamiento indefinido. Si necesitas comprobar si la cola doblemente terminada está vacía, puedes usar la función miembro empty().
Otras extensiones