función vector emplace() en C++ STL

El vector::emplace() es un STL en C++ que extiende el contenedor insertando un nuevo elemento en la posición. La reasignación ocurre solo si hay una necesidad de más espacio. Aquí el tamaño del contenedor aumenta en uno.
Sintaxis: 
 

template 
iterator vector_name.emplace (const_iterator position, element);

Parámetro: 
La función acepta dos parámetros obligatorios que se especifican a continuación:
 

  • position : especifica el iterador que apunta a la posición en el contenedor donde se insertará el nuevo elemento. 
     
  • element- Especifica el elemento a insertar en el vector contenedor. 
     

Valor devuelto: la función devuelve un iterador que apunta al elemento recién insertado.

Complejidad: Lineal Los  siguientes
programas ilustran la función anterior:
Programa 1: 
 

CPP

// C++ program to illustrate the
// vector::emplace() function
// insertion at thefront
#include <bits/stdc++.h>
using namespace std;
 
int main()
{
    vector<int> vec = { 10, 20, 30 };
 
    // insert element by emplace function
    // at front
    auto it = vec.emplace(vec.begin(), 15);
 
    // print the elements of the vector
cout << "The vector elements are: ";
    for (auto it = vec.begin(); it != vec.end(); ++it)
        cout << *it << " ";
 
    return 0;
}
Producción: 

The vector elements are: 15 10 20 30

 

Programa 2: 
 

CPP

// C++ program to illustrate the
// vector::emplace() function
// insertion at the end
#include <bits/stdc++.h>
using namespace std;
 
int main()
{
    vector<int> vec = { 10, 20, 30 };
 
    // insert element by emplace function
    // at the end
    auto it = vec.emplace(vec.end(), 16);
 
    // print the elements of the vector
cout << "The vector elements are: ";
    for (auto it = vec.begin(); it != vec.end(); ++it)
        cout << *it << " ";
 
    return 0;
}
Producción: 

The vector elements are: 10 20 30 16

 

Programa 3: 
 

CPP

// C++ program to illustrate the
// vector::emplace() function
// insertion at the middle
#include <bits/stdc++.h>
using namespace std;
 
int main()
{
    vector<int> vec = { 10, 20, 30 };
 
    // insert element by emplace function
    // in the middle
    auto it = vec.emplace(vec.begin() + 2, 16);
 
    // print the elements of the vector
cout << "The vector elements are: ";
    for (auto it = vec.begin(); it != vec.end(); ++it)
        cout << *it << " ";
 
    return 0;
}
Producción: 

The vector elements are: 10 20 16 30

 

Enlaces relacionados adicionales: emplace_front( ) y emplace_back( )

Inserción regular usando la operación de cambio en arreglos Función V/s emplace() :

a) Si desea insertar un elemento en alguna posición específica entre el primer y último índice, tenemos que desplazar todos los elementos al lado de ese índice específico. Entonces, si queremos mantener nuestro código preciso, entonces emplace() sería una buena opción. En términos de complejidad de tiempo , ambos toman el mismo tiempo lineal que depende directamente del número de operaciones de cambio.

Ex: 

C++

#include <iostream>
#include <vector>
#include <array>
using namespace std;
 
int main() {
    array<int,6> a={1,2,4,5};
    vector<int>  v={1,2,4,5};
   
    // Insert 3 in the arr at index 2
   
    for(int i=3;i>=0;i--)
    {
      if(i!=1)
        a[i+1]=a[i];
      else {       
        a[i+1]=3; break;
        }
    }   // Time complexity is high
     
    cout<<"Content of a: ";
    for(int i=0;i<5;i++)
       cout<<a[i]<<" ";
 
    v.emplace( v.begin() + 2 , 3);
     
    cout<<"\nContent of v: ";         
    for(int i=0;i<v.size();i++)
       cout<<v[i]<<" ";
   
    return 0;
}
Producción

Content of a: 1 2 3 4 5 
Content of v: 1 2 3 4 5 

Publicación traducida automáticamente

Artículo escrito por Twinkl Bajaj 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 *