哈希表创建

  • 本文关键字:创建 哈希表 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;

在这种情况下,<<运算符会做什么?

这有点变化。如果您有一个以二进制表示的数字 X 表示为 00001111,则 X <<3 将产生数字 01111000。X>> 3 将是00000001。

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

最新更新