Пользовательский класс в unordered_set
Открыто
09.02.2015, 15:36
Используя шаблоны функций и частичную специализацию шаблонов добиться корректного использования пользовательского класса в коллекциях unordered_map, unordered_set.
Неупорядоченные коллекции реализованы на базе хеш-таблиц. Для манипулирования элементами (ключами) коллекции необходимо уметь строить хеш от элемента и сравнивать два элемента коллекции. Для встроенных или стандартных типов данных хеш-функция и операция сравнения уже определены. Для пользовательских классов хеш-функцию и сравнение необходимо реализовать самостоятельно.
#include <unordered_set>
class Point {
int x, y;
};
// ...
// Point p, p1, p2;
// хеш от p: p.x^p.y,
// сравнение p1 и p2: (p1.x==p2.x) && (p1.y==p2.y)
// ...
std::unordered_set < Point > s;