在C++中实现哈希旋转方法的最佳方式是什么

What is the best way to implement a Hash rotation method in C++?

本文关键字:最佳 方式 是什么 方法 旋转 C++ 实现 哈希      更新时间:2023-10-16

我正在努力理解哈希表和哈希方法(如除法和乘法),我想知道如何在键是串行的情况下实现旋转方法。假设我有一个名为int rotation(int value)的函数,有一个类似int test = 123456的整数,我想得到结果612345。实现这一点的最佳方式是什么(比如说使用1000个整数组的文本文件)?

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,1234得到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();
}