Deque o cola de doble extremo son contenedores de secuencia con la característica de expansión y contracción en ambos extremos. Son similares a los vectores, pero son más eficientes en el caso de inserción y eliminación de elementos al final, y también al principio. A diferencia de los vectores, es posible que no se garantice la asignación de almacenamiento contiguo. Aquí veremos la diferencia entre deque::assign y deque::at en C++.
deque::empezar
deque::begin se usa para devolver un iterador que apunta al primer elemento en el contenedor deque. Devuelve un iterador de acceso aleatorio que apunta a él.
Sintaxis:
iterador begin();
Parámetros: Ninguno
Valor de retorno: su valor de retorno es un iterador al comienzo del contenedor de secuencia.
Validez del iterador: sin cambios en la validez del iterador
Archivo de cabecera:
<deque>
Excepciones: deque::begin nunca lanza una excepción
Ejemplo:
C++
// C++ program to implement deque::begin #include <deque> #include <iostream> using namespace std; // Driver code int main() { // Declaration of Deque deque<int> GFG = { 1, 2, 3, 4, 5 }; // Iterator Pointing to the first element in the // container deque<int>::iterator itr = GFG.begin(); cout << "Elements in Deque are : "; for (itr = GFG.begin(); itr != GFG.end(); ++itr) { cout << *itr << " "; } cout << endl; return 0; }
Producción:
Elements in Deque are : 1 2 3 4 5
- Complejidad de tiempo: O(N)
- Complejidad espacial: O(1)
deque::asignar
deque::assign se usa para asignar nuevos contenidos al contenedor deque reemplazando su contenido actual. Modifica el tamaño en consecuencia.
Sintaxis:
dequename.assign(<int> tamaño, <int> val)
Parámetros:
- tamaño: especifica el número de valores a asignar al contenedor.
- val: especifica el valor a asignar al contenedor.
Valor devuelto: Ninguno
Validez del iterador: en este contenedor, se invalidan todos los iteradores, punteros y referencias.
Archivo de cabecera:
<deque>
Excepciones: si se lanza una excepción, el contenedor está en un estado válido.
Ejemplo:
C++
// C++ program to implement deque::assign #include <deque> #include <iostream> using namespace std; // Driver codea int main() { // Declaration of Deque deque<int> A = { 5, 10, 15, 20 }; deque<int> B; // Iterator for deque B to traverse deque<int>::iterator itr1 = B.begin(); // Iterator for deque A to traverse deque<int>::iterator itr2 = A.begin(); // Assigning deque A elements // into deque B B.assign(A.begin(), A.end()); cout << "Elements in Container A are : "; for (itr2 = A.begin(); itr2 != A.end(); ++itr2) { cout << *itr2 << " "; } cout << endl; cout << "Elements in Container B are : "; for (itr1 = B.begin(); itr1 != B.end(); ++itr1) { cout << *itr1 << " "; } cout << endl; return 0; }
Producción:
Elements in Container A are : 5 10 15 20 Elements in Container B are : 5 10 15 20
- Complejidad de tiempo: O(N)
- Complejidad espacial: O(N)
deque::assign vs deque::begin
A continuación se muestran las diferencias entre deque::assign y deque::begin
Base | deque::empezar | deque::asignar |
---|---|---|
Definición | Se utiliza para devolver un iterador que apunta al primer elemento del contenedor deque. | Se utiliza para devolver nuevos contenidos al contenedor deque, reemplazando su contenido actual. |
Sintaxis | iterador begin(); | dequename.assign(<int> tamaño, <int> val); |
Nº de parámetros | No toma ningún parámetro. | Toma dos parámetros. |
Valor devuelto | Su valor devuelto es un iterador al comienzo del contenedor de secuencia. | No tiene ningún tipo de retorno. |
Complejidad | Constante | Lineal |
Publicación traducida automáticamente
Artículo escrito por mayank007rawa y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA