相关疑难解决方法(0)

92
推荐指数
7
解决办法
10万
查看次数

使用"constexpr"将字符串文字用于模板参数

我已经写了一些代码投const char*int使用constexpr,因此我可以使用const char*作为一个模板参数.这是代码:

#include <iostream>

class conststr
{
    public:
        template<std::size_t N>
        constexpr conststr(const char(&STR)[N])
        :string(STR), size(N-1)
        {}

        constexpr conststr(const char* STR, std::size_t N)
        :string(STR), size(N)
        {}

        constexpr char operator[](std::size_t n)
        {
            return n < size ? string[n] : 0;
        }

        constexpr std::size_t get_size()
        {
            return size;
        }

        constexpr const char* get_string()
        {
            return string;
        }

        //This method is related with Fowler–Noll–Vo hash function
        constexpr unsigned hash(int n=0, unsigned h=2166136261)
        {
            return n …
Run Code Online (Sandbox Code Playgroud)

c++ templates string-literals constexpr c++11

27
推荐指数
2
解决办法
1万
查看次数

你会如何设计一个完美哈希的函数?

感兴趣的领域是字符串匹配.假设我有这样的结构.

typedef struct
{
    char *name,
    int (*function)();

} StringArray

StringArray s[] = 
{
    {"George", func1},
    {"Paul",   func2},
    {"Ringo",  func3},
    {"John",   func4},
    {"",       NULL}   /* End of list */ 
}
Run Code Online (Sandbox Code Playgroud)

数组中有固定数量的字符串.它们是硬编码的,如示例中所示.如果表发生变化,则需要重新评估散列函数的质量.

我想将哈希函数应用于字符串,如果字符串与数组中的字符串匹配,则调用该函数.这需要一个完美的哈希函数.不允许冲突.要求散列的目的是在查找上获得O(1)性能.

您在设计功能时有什么想法?

c c++ string hash function

10
推荐指数
2
解决办法
1332
查看次数

没有预共享标识符一次验证用户的策略

我正在创建一个脚本,其中包含名称和电子邮件地址列表,并发送一封电子邮件邀请他们注册我们部门的安全网站.名称和电子邮件列表可在同一站点的公共页面上找到.我需要一种方法来为他们提供一个唯一的令牌,当他们按照电子邮件中的链接注册帐户时会识别他们.用户只会使用一次令牌,以创建帐户并设置其初始密码.

什么是生成令牌的最佳方法?存储在数据库中的随机字符串?从用户信息和一些盐生成的哈希?别的什么?我知道这种方法的安全性取决于个人电子邮件邀请的隐私,这是我理解的一点点.

javascript php hash web-applications

6
推荐指数
1
解决办法
284
查看次数

散列函数在Java中仅用5位数字生成散列值

我已经使用hashCode()StringAPI的方法,它为以下代码生成的值为99162322:

String str = "hello";           
System.out.println(str.hashCode());
Run Code Online (Sandbox Code Playgroud)

是否有任何Java API可以生成仅5位数字(63346)的哈希值,例如下面的Oracle SQL?

select ORA_HASH('hello','99999') from dual  --63346
Run Code Online (Sandbox Code Playgroud)

java oracle hash

4
推荐指数
2
解决办法
4719
查看次数