Unordered_multiset ::emplace_hint() es una función integrada en C++ STL que inserta un nuevo elemento en el contenedor unordered_multiset. Comienza a buscar desde la posición proporcionada en el parámetro para el punto de inserción del elemento. La posición solo actúa como una sugerencia, no decide la posición en la que se debe realizar la inserción. La inserción se realiza automáticamente en la posición según el criterio del contenedor. Aumenta el tamaño del contenedor en uno. Sintaxis:
unordered_multiset_name.emplace_hint(iterator position, val)
Parámetros: La función acepta dos parámetros obligatorios que se describen a continuación:
- posición: especifica el iterador que apunta a la posición desde donde se iniciará la operación de búsqueda para la inserción.
- val: especifica el elemento que se va a insertar en el contenedor.
Valor devuelto: Devuelve un iterador que apunta al elemento recién insertado. Los siguientes programas ilustran la función anterior:
Programa 1:
CPP
// C++ program to illustrate the // unordered_multiset::emplace_hint() #include <bits/stdc++.h> using namespace std; int main() { // declaration unordered_multiset<int> sample; // inserts element using emplace_hint() // fast insertions as the search starts // from the previously inserted positions auto it = sample.emplace_hint(sample.begin(), 11); it = sample.emplace_hint(it, 11); it = sample.emplace_hint(it, 11); // slow insertions as the search starts from the // beginning of the containers sample.emplace_hint(sample.begin(), 12); sample.emplace_hint(sample.begin(), 13); sample.emplace_hint(sample.begin(), 13); sample.emplace_hint(sample.begin(), 14); cout << "Elements: "; for (auto it = sample.begin(); it != sample.end(); it++) cout << *it << " "; return 0; }
Elements: 14 11 11 11 12 13 13
Complejidad de tiempo: O(n)
Espacio Auxiliar: O(n)
Programa 2:
CPP
// C++ program to illustrate the // unordered_multiset::emplace_hint() function #include <bits/stdc++.h> using namespace std; int main() { // declaration unordered_multiset<char> sample; // inserts element using emplace_hint() // fast insertions as the search starts // from the previously inserted positions auto it = sample.emplace_hint(sample.begin(), 'a'); it = sample.emplace_hint(it, 'a'); it = sample.emplace_hint(it, 'a'); it = sample.emplace_hint(it, 'b'); // slow insertions as the search starts from the // beginning of the containers sample.emplace('b'); sample.emplace('c'); sample.emplace('d'); cout << "Elements: "; for (auto it = sample.begin(); it != sample.end(); it++) cout << *it << " "; return 0; }
Elements: d a a a b b c
Complejidad de tiempo: O(n)
Espacio Auxiliar: O(n)