mirror of
https://github.com/greg7mdp/parallel-hashmap.git
synced 2026-08-29 08:34:39 +08:00
add hash_value example
This commit is contained in:
Vendored
+1
@@ -124,6 +124,7 @@ if (PHMAP_BUILD_EXAMPLES)
|
||||
add_executable(ex_bench examples/bench.cc)
|
||||
add_executable(ex_emplace examples/emplace.cc)
|
||||
add_executable(ex_hash_std examples/hash_std.cc)
|
||||
add_executable(ex_hash_value examples/hash_value.cc)
|
||||
add_executable(ex_two_files examples/f1.cc examples/f2.cc)
|
||||
add_executable(ex_insert_bench examples/insert_bench.cc)
|
||||
add_executable(ex_knucleotide examples/knucleotide.cc)
|
||||
|
||||
@@ -0,0 +1,20 @@
|
||||
#include "hash_std.h" // defines Person with std::hash specialization
|
||||
|
||||
#include <iostream>
|
||||
#include <parallel_hashmap/phmap.h>
|
||||
|
||||
int main()
|
||||
{
|
||||
// As we have defined a specialization of std::hash() for Person,
|
||||
// we can now create sparse_hash_set or sparse_hash_map of Persons
|
||||
// ----------------------------------------------------------------
|
||||
phmap::flat_hash_set<Person> persons =
|
||||
{ { "John", "Mitchell", 35 },
|
||||
{ "Jane", "Smith", 32 },
|
||||
{ "Jane", "Smith", 30 },
|
||||
};
|
||||
|
||||
for (auto& p: persons)
|
||||
std::cout << p._first << ' ' << p._last << " (" << p._age << ")" << '\n';
|
||||
|
||||
}
|
||||
Vendored
+25
@@ -0,0 +1,25 @@
|
||||
#ifndef phmap_example_hash_value_
|
||||
#define phmap_example_hash_value_
|
||||
|
||||
#include <parallel_hashmap/phmap_utils.h> // minimal header providing phmap::HashState()
|
||||
#include <string>
|
||||
using std::string;
|
||||
|
||||
struct Person
|
||||
{
|
||||
bool operator==(const Person &o) const
|
||||
{
|
||||
return _first == o._first && _last == o._last && _age == o._age;
|
||||
}
|
||||
|
||||
friend size_t hash_value(const Person &p)
|
||||
{
|
||||
return phmap::HashState().combine(0, p._first, p._last, p._age);
|
||||
}
|
||||
|
||||
string _first;
|
||||
string _last;
|
||||
int _age;
|
||||
};
|
||||
|
||||
#endif // phmap_example_hash_value_
|
||||
Reference in New Issue
Block a user