std::hash class in C++ STL

The hash class is default constructible, which means that one can construct this object without any arguments or initialization values. It is used to get the hash value of the argument that is being passed to it. If the argument doesn’t change, the value doesn’t change either.

Syntax:

template <class T> struct hash;

Syntax to create object:



hash<class template> object-name

Member functions: This Hash class only has one member function:

  • operator(): It returns hashed value for given argument.

Below is the implementation of the hash class:

Example:

filter_none

edit
close

play_arrow

link
brightness_4
code

#include <bitset>
  
// functional header
// for hash<class template> class
#include <functional>
  
#include <iostream>
#include <string>
#include <vector>
  
using namespace std;
  
// To demonstrate String Hashing
void stringHashing()
{
  
    // Get the string
    // to get its hash value
    string hashing1 = "Geeks";
  
    // Instatiation of Object
    hash<string> mystdhash;
  
    // Using operator() to get hash value
    cout << "String hash values: "
         << mystdhash(hashing1)
         << endl;
}
  
// To demonstrate BITSET Hashing
void bitsetHashing()
{
  
    // Get the BITSET
    // to get its hash value
    bitset<5> h_bitset("10101");
  
    // Instatiation of Object
    hash<bitset<5> > hash_bitset;
  
    // Using operator() to get hash value
    cout << "\nBitset 10101 hash value: "
         << hash_bitset(h_bitset) << endl;
}
  
// To demonstrate Vector<bool> Hashing
void vectorHashing()
{
  
    // Get the Vector<bool>
    // to get its hash value
    vector<bool>
        h_vecbool{ true, false,
                   true, false };
  
    // Instatiation of Object
    hash<vector<bool> > hash_vector_bool;
  
    // Using operator() to get hash value
    cout << "\nVector<bool> hash value: "
         << hash_vector_bool(h_vecbool)
         << endl;
}
  
// To demonstrate Char Hashing
void charHashing()
{
  
    // Get the char
    // to get its hash value
    char ch = 'a';
  
    // Instatiation of Object
    hash<char> hash_char;
  
    // Using operator() to get hash value
    cout << "\nChar hash values: "
         << hash_char(ch)
         << endl;
}
  
// Driver Code
int main()
{
  
    stringHashing();
    bitsetHashing();
    vectorHashing();
    charHashing();
}

chevron_right


Output:

String hash values: 4457761756728957899

Bitset 10101 hash value: 17123654466142159564

Vector hash value: 16935082123893034051

Char hash values: 97

Reference: http://www.cplusplus.com/reference/functional/hash/



My Personal Notes arrow_drop_up

I am doing BTech at Dhirubhai Ambani Institute of Information and Communication Technology

If you like GeeksforGeeks and would like to contribute, you can also write an article using contribute.geeksforgeeks.org or mail your article to contribute@geeksforgeeks.org. See your article appearing on the GeeksforGeeks main page and help other Geeks.

Please Improve this article if you find anything incorrect by clicking on the "Improve Article" button below.




Article Tags :
Practice Tags :


2


Please write to us at contribute@geeksforgeeks.org to report any issue with the above content.