Los vectores son lo mismo que las arrays dinámicas con la capacidad de cambiar su tamaño automáticamente cuando se inserta o elimina un elemento, y el contenedor maneja automáticamente su almacenamiento.
Esta función se utiliza para insertar un nuevo elemento en el contenedor de vectores, el nuevo elemento se agrega al final del vector.
Sintaxis:
vectorname.emplace_back(value) Parameters : The element to be inserted into the vector is passed as the parameter. Result : The parameter is added to the vector at the end position.
Ejemplos:
Input: myvector{1, 2, 3, 4, 5}; myvector.emplace_back(6); Output: myvector = 1, 2, 3, 4, 5, 6 Input: myvector{}; myvector.emplace_back(4); Output: myvector = 4
Errores y excepciones:
- Tiene una fuerte garantía de excepción, por lo tanto, no se realizan cambios si se lanza una excepción.
- El parámetro debe ser del mismo tipo que el del contenedor, de lo contrario, se arroja un error.
Ejemplo 1:
// INTEGER VECTOR EXAMPLE // CPP program to illustrate // Implementation of emplace() function #include <iostream> #include <vector> using namespace std; int main() { vector<int> myvector; myvector.emplace_back(1); myvector.emplace_back(2); myvector.emplace_back(3); myvector.emplace_back(4); myvector.emplace_back(5); myvector.emplace_back(6); // vector becomes 1, 2, 3, 4, 5, 6 // printing the vector for (auto it = myvector.begin(); it != myvector.end(); ++it) cout << ' ' << *it; return 0; }
Producción:
1 2 3 4 5 6
Ejemplo 2:
// STRING VECTOR EXAMPLE // CPP program to illustrate // Implementation of emplace() function #include <iostream> #include <vector> #include <string> using namespace std; int main() { // vector declaration vector<string> myvector; myvector.emplace_back("This"); myvector.emplace_back("is"); myvector.emplace_back("a"); myvector.emplace_back("computer science"); myvector.emplace_back("portal"); // vector becomes This, is, a computer science, portal // printing the vector for (auto it = myvector.begin(); it != myvector.end(); ++it) cout << ' ' << *it; return 0; }
Producción:
This is a computer science portal
Ejemplo 3:
// CHARACTER VECTOR EXAMPLE // CPP program to illustrate // Implementation of emplace() function #include <iostream> #include <vector> using namespace std; int main() { vector<char> myvector; myvector.emplace_back('a'); myvector.emplace_back('c'); myvector.emplace_back('x'); myvector.emplace_back('y'); myvector.emplace_back('z'); // vector becomes a, c, x, y, z // printing the vector for (auto it = myvector.begin(); it != myvector.end(); ++it) cout << ' ' << *it; return 0; }
Producción:
a, c, x, y, z
Complejidad de tiempo: O(1)
Aplicación:
dado un vector vacío, agregue números enteros usando la función emplace_back y luego calcule su tamaño.
Input : 1, 2, 3, 4, 5, 6 Output : 6
Algoritmo
- Agregue elementos al vector usando la función emplace_back
- Verifique si el tamaño del vector es 0, de lo contrario, incremente la variable de contador inicializada como 0 y extraiga el elemento posterior.
- Repita este paso hasta que el tamaño del vector sea 0.
- Imprime el valor final de la variable.
// CPP program to illustrate // Application of emplace_back function #include <iostream> #include <vector> using namespace std; int main() { int count = 0; vector<int> myvector; myvector.emplace_back(1); myvector.emplace_back(2); myvector.emplace_back(3); myvector.emplace_back(4); myvector.emplace_back(5); myvector.emplace_back(6); while (!myvector.empty()) { count++; myvector.pop_back(); } cout << count; return 0; }
Producción:
6
emplace_back() frente a push_back()
- push_back() copia una string en un vector. Primero, se creará implícitamente un nuevo objeto de string inicializado con char* proporcionado. Luego se llamará a push_back, que copiará esta string en el vector usando el constructor de movimiento porque la string original es un objeto temporal. Entonces el objeto temporal será destruido.
- emplace_back() construye una string en el lugar, por lo que no se creará una string temporal, sino que se llamará a emplace_back() directamente con el argumento char*. A continuación, creará una string que se almacenará en el vector inicializado con este carácter*. Entonces, en este caso, evitamos construir y destruir un objeto de string temporal innecesario.
Consulte emplace vs insert en C++ STL para obtener más información.
// C++ code to demonstrate difference between // emplace_back and insert_back #include<bits/stdc++.h> using namespace std; int main() { // declaring priority queue vector<pair<char, int>> vect; // using emplace() to insert pair in-place vect.emplace_back('a', 24); // Below line would not compile // vect.push_back('b', 25); // using push_back() to insert vect.push_back(make_pair('b', 25)); // printing the vector for (int i=0; i<vect.size(); i++) cout << vect[i].first << " " << vect[i].second << endl; return 0; }
Producción:
a 24 b 25
Publicación traducida automáticamente
Artículo escrito por AyushSaxena y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA