Блок задач

7. Шаблоны C++

Темы
Сложность 1

Задача «Пользовательский класс в unordered_set»

Задание

Используя шаблоны функций и частичную специализацию шаблонов добиться корректного использования пользовательского класса в коллекциях 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;