hash_map (C++)
From Wikipedia, the free encyclopedia
In C++ computer programming , hash_map
is the name of a hashed associative container in the Standard Template Library . It is provided by several implementors, such as the GNU C++ compiler and Microsoft 's Visual C++ . It is not part of the C++ Standard Library , but the upcoming C++0x standard will define the TR1 -proposed class unordered_map
.
[edit ] Templates
The hash_map
template accepts five template arguments:
std::hash_map<Key, Data, HashFcn, EqualKey, Alloc>
- Key datatype
- Data datatype
- Hash function
- Equality function
- Allocator
Usage with the GNU C++ compiler:
#include <ext/hash_map>
namespace std { using namespace __gnu_cxx; }
Usage with Microsoft Visual C++:
#include <hash_map>
[edit ] Example with GNU C++
This is the same example given in the SGI's STL official page.
#include <iostream>
#include <hash_map>
#include <string.h>
using namespace std;
using namespace __gnu_cxx;
struct eqstr{
bool operator()(const char* s1, const char* s2) const {
return strcmp(s1,s2)==0;
}
};
int main(){
hash_map<const char*, int, hash<const char*>, eqstr> months;
months["january"] = 31;
months["february"] = 28;
months["march"] = 31;
months["april"] = 30;
months["may"] = 31;
months["june"] = 30;
months["july"] = 31;
months["august"] = 31;
months["september"] = 30;
months["october"] = 31;
months["november"] = 30;
months["december"] = 31;
cout << "september -> " << months["september"] << endl;
cout << "april -> " << months["april"] << endl;
cout << "june -> " << months["june"] << endl;
cout << "november -> " << months["november"] << endl;
return 0;
}