想象一下两个正整数A和B.我想将这两个整数组合成一个整数C.
可能没有其他整数D和E组合为C.因此将它们与加法运算符组合不起作用.例如30 + 10 = 40 = 40 + 0 = 39 + 1连接也不起作用.例如"31"+"2"= 312 ="3"+"12"
这种组合操作也应该是确定性的(总是在相同的输入下产生相同的结果)并且应该总是在整数的正侧或负侧产生整数.
我有一个名为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();
    }
};
但是,我不确定这是否真的是一个很好的哈希函数.我想要快速的东西,因为我需要很快进行很多查找.我可以使用更好的哈希函数,还是可以的?