Las colas Deque o de doble extremo son contenedores de secuencia con la función 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::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:
1. tamaño: especifica el número de valores a asignar al contenedor.
2. val: especifica el valor a asignar al contenedor.
En este contenedor, se invalidan todos los iteradores, punteros y referencias. El archivo de encabezado para usar deque::assign es <deque>. Si se lanza una excepción, el contenedor está en un estado válido.
A continuación se muestra el programa C++ para implementar deque::assign:
C++
// C++ program to implement deque::assign #include <iostream> #include<deque> using namespace std; // Driver code int main() { // Declaration of Deque deque<int> first = {10, 20, 30, 40, 50, 60}; deque<int> second; // Iterator for deque to traverse deque<int>::iterator itr = second.begin(); // Assigning first deque elements // into second second.assign(first.begin(), first.end()); cout << "Elements after assigning : "; for(itr = second.begin(); itr != second.end(); ++itr) { cout <<*itr<<" "; } cout << endl; return 0; }
Elements after assigning : 10 20 30 40 50 60
- Complejidad temporal: O(N).
- Complejidad espacial: O(N).
Deque::en
deque::at se usa para devolver una referencia al elemento en la posición x en el objeto contenedor deque. Deque::at comprueba automáticamente si x está dentro de los límites de los elementos válidos en el contenedor o no.
Sintaxis:
en (tamaño_tipo n);
Parámetros:
Posición del elemento a buscar.
Valor de retorno: Referencia directa al elemento en la posición dada.
En este contenedor todos los iteradores son válidos. El archivo de encabezado para usar deque::at es <deque>.
Excepción:
- Si se lanza una excepción, no hay cambios en el contenedor.
- Lanza out_of_range si n está fuera de los límites.
A continuación se muestra el programa C++ para implementar deque::at:
C++
// C++ program to implement // deque::at #include <iostream> #include <deque> using namespace std; // Driver code int main () { // 10 zero-initialized unsigneds deque<int> gfg (10); // Here we have assigned some values for (int i = 0; i < gfg.size(); i++) gfg.at(i) = i; cout << "Elements after using deque::at -:"; for (int i = 0; i < gfg.size(); i++) { cout << ' ' << gfg.at(i); } cout << endl; return 0; }
Elements after using deque::at -: 0 1 2 3 4 5 6 7 8 9
- Complejidad de tiempo: O(1)
- Complejidad espacial: O(1)
deque::asignar vs deque::at
A continuación se muestran las diferencias entre deque::assign y deque::at:
Base | deque::asignar | deque::en |
---|---|---|
Definición | Se utiliza para asignar nuevos contenidos al contenedor deque, reemplazando su contenido actual | Se utiliza para devolver una referencia al elemento en la posición n en el objeto contenedor deque. |
Sintaxis | dequename.assign(<int> tamaño, <int> val); | referencia en (tamaño_tipo n); |
Nº de parámetros | Toma dos parámetros. | Toma solo un parámetro. |
Valor devuelto | No tiene ningún tipo de retorno. | Devuelve una referencia directa al elemento en la posición dada. |
Complejidad | Su complejidad es lineal. | Su complejidad es constante. |
Publicación traducida automáticamente
Artículo escrito por mayank007rawa y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA