deque::operator= y deque::operator[] en C++ STL

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 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.
 

deque::operador=

Este operador se utiliza para asignar nuevos contenidos al contenedor reemplazando los contenidos existentes. 
También modifica el tamaño según los nuevos contenidos.

Sintaxis: 

dequename1 = (dequename2)
Parameters :
Another container of the same type.
Result :
Assign the contents of the container passed as 
parameter to the container written on left side of the operator.

Ejemplos: 

Input  :  mydeque1 = 1, 2, 3
          mydeque2 = 3, 2, 1, 4
          mydeque1 = mydeque2;
Output :  mydeque1 = 3, 2, 1, 4

Input  :  mydeque1 = 2, 6, 1, 5
          mydeque2 = 3, 2
          mydeque1 = mydeque2;
Output :  mydeque1 = 3, 2

Errores y Excepciones
1. Si los contenedores son de diferentes tipos, se arroja un error. 
2. De lo contrario, tiene una garantía básica de lanzamiento sin excepción.

C++

// CPP program to illustrate
// Implementation of = operator
#include <deque>
#include <iostream>
using namespace std;
 
int main()
{
    deque<int> mydeque1{ 1, 2, 3 };
    deque<int> mydeque2{ 3, 2, 1, 4 };
    mydeque1 = mydeque2;
    cout << "mydeque1 = ";
    for (auto it = mydeque1.begin(); it != mydeque1.end(); ++it)
        cout << ' ' << *it;
    return 0;
}

Producción: 

mydeque1= 3 2 1 4

Complejidad temporal: O(n)

Espacio Auxiliar: O(n)

deque::operador[]

Este operador se usa para hacer referencia al elemento presente en la posición dada dentro del operador. Es similar a la función at(), la única diferencia es que la función at() arroja una excepción fuera de rango cuando la posición no está dentro de los límites del tamaño de deque, mientras que este operador provoca un comportamiento indefinido .

Sintaxis: 

dequename[position]
Parameters :
Position of the element to be fetched.
Returns :
Direct reference to the element at the given position.

Ejemplos: 

Input  :  mydeque = 1, 2, 3
          mydeque[2];
Output :  3

Input  :  mydeque = 3, 4, 1, 7, 3
          mydeque[3];
Output :  7

Errores y excepciones
1. Si la posición no está presente en el deque, muestra un comportamiento indefinido. 
2. Tiene una garantía de tiro sin excepción en caso contrario. 

C++

// CPP program to illustrate
// Implementation of [] operator
#include <deque>
#include <iostream>
using namespace std;
 
int main()
{
    deque<int> mydeque;
    mydeque.push_back(3);
    mydeque.push_back(4);
    mydeque.push_back(1);
    mydeque.push_back(7);
    mydeque.push_back(3);
    cout << mydeque[3];
    return 0;
}

Producción: 

7

Complejidad del tiempo: O(1)

Espacio Auxiliar: O(n)

Aplicación 
Dado un deque de enteros, imprime todos los enteros presentes en posiciones pares. 

Input  :1, 2, 3, 4, 5, 6, 7, 8, 9
Output :1 3 5 7 9
Explanation - 1, 3, 5, 7 and 9 are at position 0, 2, 4, 6 and 8 which are even

Algoritmo 
1. Ejecute un ciclo hasta el tamaño de la array. 
2. Compruebe si la posición es divisible por 2, en caso afirmativo, imprima el elemento en esa posición.

C++

// CPP program to illustrate
// Application of [] operator
#include <deque>
#include <iostream>
using namespace std;
 
int main()
{
    deque<int> mydeque;
    mydeque.push_back(1);
    mydeque.push_back(2);
    mydeque.push_back(3);
    mydeque.push_back(4);
    mydeque.push_back(5);
    mydeque.push_back(6);
    mydeque.push_back(7);
    mydeque.push_back(8);
    mydeque.push_back(9);
    // Deque becomes 1, 2, 3, 4, 5, 6, 7, 8, 9
 
    for (int i = 0; i < mydeque.size(); ++i) {
        if (i % 2 == 0) {
            cout << mydeque[i];
            cout << " ";
        }
    }
    return 0;
}

Producción: 

1 3 5 7 9

Complejidad del tiempo: O(1)

Espacio Auxiliar: O(n)
 

Veamos las diferencias en forma tabular -:

  deque::operador=  deque::operador[]
1. Se utiliza para asignar nuevos contenidos al contenedor y reemplazar su contenido actual. Se utiliza para devolver una referencia al elemento en la posición n en el contenedor deque.
2. Su sintaxis es -:
deque& operator= (const deque& x);

Su sintaxis es -:

operador de referencia[] (tamaño_tipo n);

3.

Toma dos parámetros que son -:

1. Un objeto deque del mismo tipo 

2. Un objeto de lista de inicializadores.

Solo toma un parámetro que es la posición del elemento en el contenedor.
4. Su complejidad es lineal. Su complejidad es constante.
5. Se define en el archivo de encabezado <deque> . Su validez de iterador no cambia.

Publicación traducida automáticamente

Artículo escrito por AyushSaxena y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *