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::cbegin
deque::cbegin se usa para devolver un iterador const que apunta al primer elemento en el contenedor. No podemos usar esto para modificar los contenidos a los que apunta el iterador.
Sintaxis:
const_iterator cbegin();
Parámetros: Ninguno
Valor devuelto: un const_iterator al comienzo de la secuencia.
Validez del iterador: no hay cambios en la validez del iterador
Archivo de cabecera:
<deque>
Excepciones: Nunca lanza excepciones .
Ejemplo:
C++
// C++ program to demonstrate deque::cbegin #include <deque> #include <iostream> using namespace std; // Driver code int main() { // Declaration of Deque deque<int> GFG = { 1, 2, 3, 4, 5 }; cout << "Elements in Deque Container are : "; for (auto it = GFG.cbegin(); it != GFG.cend(); ++it) { cout << *it << " "; } cout << endl; return 0; }
Producción:
Elements in Deque Container are : 1 2 3 4 5
- Complejidad del tiempo – O(1)
- 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 demonstrate deque::assign #include <deque> #include <iostream> using namespace std; // Driver code int main() { // Declaration of Deque deque<int> A = { 10, 20, 30, 40, 50, 60 }; deque<int> B; // Iterator for deque to traverse deque<int>::iterator itr = B.begin(); // Assigning deque A elements // into deque B B.assign(A.begin(), A.end()); cout << "Elements in Deque B are : "; for (itr = B.begin(); itr != B.end(); ++itr) { cout << *itr << " "; } cout << endl; return 0; }
Producción:
Elements in Deque B are : 10 20 30 40 50 60
- Complejidad de tiempo: O(N)
- Complejidad espacial: O(N)
deque::assign vs deque::cbegin
A continuación se muestran las diferencias entre deque::assign y deque::cbegin
Base | deque::cbegin | deque::asignar |
---|---|---|
Definición | Se utiliza para devolver un iterador const que apunta al primer elemento del contenedor. | Se utiliza para asignar nuevos contenidos al contenedor deque, reemplazando su contenido actual |
Sintaxis | const_iterator cbegin(); | dequename.assign(<int> tamaño, <int> val); |
Parámetros | No toma ningún parámetro. | Se necesitan dos parámetros, es decir, tamaño y valor. |
Valor devuelto | Su valor devuelto es un const_iterator al comienzo de la 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