#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");
}
|