在C ++中实现Hash旋转方法的最佳方法是什么?

时间:2016-05-04 21:26:22

标签: c++ hash

我正在尝试理解哈希表和哈希方法(例如除法和乘法),我想知道如何在键是串行时实现旋转方法。假设我有一个名为int rotation(int value)的函数,我有一个像int test = 123456这样的整数,我想得到结果612345.什么是普遍实现这个的最佳方法(比如说文本文件是1000个整数组)?

1 个答案:

答案 0 :(得分:1)

int rotate(int value)
{
    bool isNegative = value < 0;
    if(isNegative)
        value = -value;
    int v = value % 10;
    value /= 10;
    while(v < value)
        v *= 10;
    value += v;
    return isNegative ? -value : value;
}

这会根据密码的数量轮换你的数字(123得312,334得4123)。

对于文件部分:您必须打开它,读取值,将它们转换为int并调用函数:

::std::ifstream in("filename");
if(in.fail())
{
    // error
}
else
{
    int n;
    for(;;)
    {
        in >> n;
        if(in.eof() || in.fail())
            break;

        ::std::cout << rotate(n) << ::std::endl;
    }
    in.close();
}