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

Unordered_multiset ::rehash() es una función incorporada 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_multset_name.rehash(N);

Parámetros: la función acepta solo un parámetro como se indica a continuación: 

  • count : Es el nuevo número de baldes.

Valor devuelto: ninguno (función de tipo vacío)

Los siguientes programas ilustran el método anterior:

Programa 1:  

C++

// C++ program to illustrate
// unordered_multiset::rehash()
#include <iostream>
#include <unordered_set>
using namespace std;
 
// function to display values in multiset
void display(unordered_multiset<int> s)
{
    for (auto it = s.begin(); it != s.end(); it++)
        cout << *it << endl;
}
 
int main()
{
    // declaration
    unordered_multiset<int> s1;
 
    // inserting initial values
    s1.insert(1);
    s1.insert(2);
    s1.insert(3);
 
    // displaying Initial values
    cout << "Initial values are:\n";
    display(s1);
    cout << endl;
 
    // displaying initial parameters
    cout << "initial parameters are: \n";
    cout << "bucketcount() = " << s1.bucket_count() << endl;
    cout << "load factor = " << s1.load_factor() << endl;
    cout << "Max_load_factor = " << s1.max_load_factor() << endl;
    cout << endl;
 
    // performing rehash
    s1.rehash(200);
 
    // displaying final parameters
    cout << "final parameters are: \n";
    cout << "bucketcount() = " << s1.bucket_count() << endl;
    cout << "load factor = " << s1.load_factor() << endl;
    cout << "Max_load_factor = " << s1.max_load_factor() << endl;
    cout << endl;
 
    return 0;
}
Producción: 

Initial values are:
3
1
2

initial parameters are: 
bucketcount() = 7
load factor = 0.428571
Max_load_factor = 1

final parameters are: 
bucketcount() = 211
load factor = 0.014218
Max_load_factor = 1

 

Programa 2: 

C++

// C++ program to illustrate
// unordered_multiset::rehash()
#include <iostream>
#include <unordered_set>
using namespace std;
 
// function to display values in multiset
void display(unordered_multiset<char> s)
{
    for (auto it = s.begin(); it != s.end(); it++)
        cout << *it << endl;
}
int main()
{
    // declaration
    unordered_multiset<char> s1;
 
    // inserting initial values
    s1.insert('a');
    s1.insert('b');
    s1.insert('c');
 
    // displaying Initial values
    cout << "Initial values are:\n";
    display(s1);
    cout << endl;
 
    // displaying initial parameters
    cout << "initial parameters are: \n";
    cout << "bucketcount() = " << s1.bucket_count() << endl;
    cout << "load factor = " << s1.load_factor() << endl;
    cout << "Max_load_factor = " << s1.max_load_factor() << endl;
    cout << endl;
 
    // performing rehash
    s1.rehash(200);
 
    // displaying final parameters
    cout << "final parameters are: \n";
    cout << "bucketcount() = " << s1.bucket_count() << endl;
    cout << "load factor = " << s1.load_factor() << endl;
    cout << "Max_load_factor = " << s1.max_load_factor() << endl;
    cout << endl;
     
    return 0;
}
Producción: 

Initial values are:
c
a
b

initial parameters are: 
bucketcount() = 7
load factor = 0.428571
Max_load_factor = 1

final parameters are: 
bucketcount() = 211
load factor = 0.014218
Max_load_factor = 1

 

Publicación traducida automáticamente

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