You can not select more than 25 topics
			Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
		
		
		
		
		
			
		
			
				
					
					
						
							47 lines
						
					
					
						
							1.0 KiB
						
					
					
				
			
		
		
		
			
			
			
				
					
				
				
					
				
			
		
		
	
	
							47 lines
						
					
					
						
							1.0 KiB
						
					
					
				
								#include <iostream>
							 | 
						|
								#include <string>
							 | 
						|
								#include <sparsepp/spp.h>
							 | 
						|
								
							 | 
						|
								using std::string;
							 | 
						|
								
							 | 
						|
								struct Person
							 | 
						|
								{
							 | 
						|
								    bool operator==(const Person &o) const
							 | 
						|
								    { 
							 | 
						|
								        return _first == o._first && _last == o._last; 
							 | 
						|
								    }
							 | 
						|
								
							 | 
						|
								    string _first;
							 | 
						|
								    string _last;
							 | 
						|
								};
							 | 
						|
								
							 | 
						|
								namespace std
							 | 
						|
								{
							 | 
						|
								// inject specialization of std::hash for Person into namespace std
							 | 
						|
								// ----------------------------------------------------------------
							 | 
						|
								template<>
							 | 
						|
								struct hash<Person>
							 | 
						|
								{
							 | 
						|
								    std::size_t operator()(Person const &p) const
							 | 
						|
								    {
							 | 
						|
								        std::size_t seed = 0;
							 | 
						|
								        spp::hash_combine(seed, p._first);
							 | 
						|
								        spp::hash_combine(seed, p._last);
							 | 
						|
								        return seed;
							 | 
						|
								    }
							 | 
						|
								};
							 | 
						|
								}
							 | 
						|
								
							 | 
						|
								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
							 | 
						|
								    // ----------------------------------------------------------------
							 | 
						|
								    spp::sparse_hash_set<Person> persons = 
							 | 
						|
								        { { "John", "Galt" },
							 | 
						|
								          { "Jane", "Doe" }
							 | 
						|
								        };
							 | 
						|
								
							 | 
						|
								    for (auto& p: persons)
							 | 
						|
								        std::cout << p._first << ' ' << p._last << '\n';
							 | 
						|
								}
							 |