У меня есть структура под названием Point. Суть довольно проста:
struct Point
{
Row row;
Column column;
// some other code for addition and subtraction of points is there too
}
Row
и Column
в основном прославляются int
с, но я устал от случайного переноса входных аргументов в функции и дал каждому из них класс-оболочку.
Сейчас я использую set
точек, но повторные поиски действительно замедляют процесс. Я хочу перейти на unordered_set
.
Итак, я хочу получить unordered_set
из Point
с. Обычно этот набор может содержать, например, каждую точку на терминале 80x24 = 1920 точек. Мне нужна хорошая хеш-функция. Я просто придумал следующее:
struct PointHash : public std::unary_function<Point, std::size_t>
{
result_type operator()(const argument_type& val) const
{
return val.row.value() * 1000 + val.col.value();
}
};
Однако я не уверен, что это действительно хорошая хеш-функция. Я хотел что-то быстрое, так как мне нужно очень быстро выполнять поиск. Есть ли лучшая хэш-функция, которую я могу использовать, или это нормально?