哈希表创建

时间:2013-09-27 01:23:38

标签: c++

我正在阅读的一本书使用以下函数创建一个哈希表

size_t hash(const std::string &str) {
    int count = 16;
    size_t hash_value = 0;
    const char *cstr = str.c_str();
    while(cstr && *cstr && --count)
        hash_value += (*cstr++ - 'a') << (count % 4);
   return hash_value;

<<运算符在此上下文中的作用是什么?

1 个答案:

答案 0 :(得分:1)

这有点转变。如果你有一个以二进制表示的数字X为00001111,那么X&lt;&lt; 3将导致数字01111000.X&gt;&gt; 3将是00000001。

实际上,X << nX * 2^n相同(考虑无符号类型的溢出)。 X >> n相当于X / 2^n^我指的是权力。