Skip to content

Latest commit

 

History

History
43 lines (24 loc) · 2.94 KB

CppHash_set.md

File metadata and controls

43 lines (24 loc) · 2.94 KB

 

 

 

 

 

 

__gnu_cxx::hash_set is a container to store elements like in a std::set in such a way that retrieval is quicker.

 

 


#include <cassert> #include <ext/hash_set> struct File {   File(const int any_id, const std::string& any_name)   : id(any_id), name(any_name) {}   const int id;   const std::string name; }; bool operator==(const File& lhs, const File& rhs) {   return (lhs.id == rhs.id && lhs.name == rhs.name); } struct Hash_file {   std::size_t operator()(const File& f) const   {     __gnu_cxx::hash<int> hash_function;     return hash_function(f.id);   } }; int main() {   __gnu_cxx::hash_set;<File, Hash_file> files;   const File f1 = File(0,"Bilderbikkel.txt");   const File f2 = File(1,"Parachutemeisje.txt");   files.insert(f1);   files.insert(f2);   assert((*files.find(f1)).id == 0);   assert((*files.find(f1)).name == "Bilderbikkel.txt");   assert((*files.find(f2)).id == 1);   assert((*files.find(f2)).name == "Parachutemeisje.txt"); }