función unordered_multimap rehash() en C++ STL

Unordered_multimap ::rehash(N) es una función integrada en C++ STL que establece la cantidad de cubos en el contenedor en N o más. Si N es mayor que el número actual de cubos en el contenedor (bucket_count), se fuerza una repetición .
El nuevo recuento de cubos puede ser igual o mayor que N. Si n es menor que el número actual de cubos en el contenedor ( bucket_count ), es posible que la función no tenga efecto en el recuento de cubos y no fuerce una repetición.
Un refrito es la reconstrucción de la tabla hash: todos los elementos del contenedor se reorganizan según su valor hash en el nuevo conjunto de cubos. Esto puede alterar el orden de iteración de los elementos dentro del contenedor, aunque se conserva el orden relativo de los elementos con claves equivalentes. El contenedor realiza automáticamente refritos cada vez que su factor de carga va a superar su max_load_factor en una operación. Al llamar a rehash para reservar una cierta cantidad mínima de cubos en la tabla hash, evitamos los múltiples rehashes que puede causar la expansión del contenedor.

Sintaxis:

unordered_multimap_name.rehash(N)

Parámetros: la función acepta un único parámetro obligatorio N que especifica el número mínimo de cubos para la tabla hash del contenedor.

Valor devuelto: la función no devuelve nada.

Los siguientes programas ilustran la función anterior:

Programa 1:

// C++ program to illustrate the
// unordered_multimap::rehash()
#include <bits/stdc++.h>
using namespace std;
  
int main()
{
  
    // declaration
    unordered_multimap<int, int> sample1, sample2;
  
    // the sample1 size is reserved for
    // the bucket to contain a minimum of
    // one elements
    sample1.rehash(1);
  
    // inserts key and element
    // in sample1
    sample1.insert({ 10, 100 });
    sample1.insert({ 50, 500 });
  
    // inserts key and element
    // in sample1
  
    // the sample1 size is reserved for
    // the bucket to contain a minimum of
    // three elements
    sample2.rehash(3);
  
    sample2.insert({ 20, 200 });
    sample2.insert({ 30, 300 });
    sample2.insert({ 30, 150 });
  
    cout << "The size of Sample1 is: " << sample1.size();
  
    cout << "\nKey and Elements of Sample1 are:";
    for (auto it = sample1.begin(); it != sample1.end(); it++) {
        cout << "{" << it->first << ", " << it->second << "} ";
    }
  
    cout << "\n\nThe size of Sample2 is: " << sample2.size();
  
    cout << "\nKey and Elements of Sample2 are:";
    for (auto it = sample2.begin(); it != sample2.end(); it++) {
        cout << "{" << it->first << ", " << it->second << "} ";
    }
  
    return 0;
}
Producción:

The size of Sample1 is: 2
Key and Elements of Sample1 are:{50, 500} {10, 100} 

The size of Sample2 is: 3
Key and Elements of Sample2 are:{30, 150} {30, 300} {20, 200}

Programa 2:

// C++ program to illustrate the
// unordered_multimap::rehash()
#include <bits/stdc++.h>
using namespace std;
  
int main()
{
  
    // declaration
    unordered_multimap<char, char> sample1, sample2;
  
    // the sample1 size is reserved for
    // the bucket to contain a minimum of
    // one elements
    sample1.rehash(1);
  
    // inserts key and element
    // in sample1
    sample1.insert({ 'a', 'A' });
    sample1.insert({ 'g', 'G' });
  
    // inserts key and element
    // in sample1
  
    // the sample1 size is reserved for
    // the bucket to contain a minimum of
    // three elements
    sample2.rehash(3);
  
    sample2.insert({ 'b', 'B' });
    sample2.insert({ 'c', 'C' });
    sample2.insert({ 'd', 'D' });
  
    cout << "The size of Sample1 is: " << sample1.size();
  
    cout << "\nKey and Elements of Sample1 are:";
    for (auto it = sample1.begin(); it != sample1.end(); it++) {
        cout << "{" << it->first << ", " << it->second << "} ";
    }
  
    cout << "\n\nThe size of Sample2 is: " << sample2.size();
  
    cout << "\nKey and Elements of Sample2 are:";
    for (auto it = sample2.begin(); it != sample2.end(); it++) {
        cout << "{" << it->first << ", " << it->second << "} ";
    }
  
    return 0;
}
Producción:

The size of Sample1 is: 2
Key and Elements of Sample1 are:{g, G} {a, A} 

The size of Sample2 is: 3
Key and Elements of Sample2 are:{d, D} {c, C} {b, B}

Referencia: http://www.cplusplus.com/reference/unordered_map/unordered_multimap/rehash/

Publicación traducida automáticamente

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