همانطوری که دوستان توضیح دادن از hash استفاده کنید به صورت زیر:
#include <vector>
#include <iostream>
#include <unordered_set>
using namespace std;
struct Person{
Person(string _name, int _id) :name(_name), id(_id){}
Person(string _name) :name(_name), id(0){}
string name;
int id;
bool operator== (const Person &person) const {
return name == person.name;
}
};
struct Hash {
size_t operator() (const Person &person) const {
return std::hash<std::string>()(person.name);
}
};
int _tmain(int argc, _TCHAR* argv[])
{
std::unordered_set<Person,Hash> persons;
persons.reserve(5);
persons.insert(Person("7",0));
persons.insert(Person("khat",1));
persons.insert(Person("code",2));
persons.insert(Person(".", 3));
persons.insert(Person("com", 4));
auto pos = persons.find(Person("khat"));
if (pos != persons.end())
cout << "yes";
else cout << "no";
return 0;
}