如何在C ++标准库中启用哈希?

时间:2011-12-01 19:01:00

标签: c++ stl hash hashtable

我尝试过使用#include<hash_map>#include <hash_set>但我仍然遇到同样的错误。

这是我的代码:

void HashTable_chaining::remove( const string & x )
{
    int hash_index = hash( x, theLists.size( ) ) ;

    list<string>&  whichList = theLists[ hash_index ];

    // search to make sure element not present
    for(list<string>::iterator itr=whichList.begin();itr!=whichList.end();itr++) {
        if(*itr==x) {
            theLists[hash_index].erase(itr);
            return;
        }
    }
    // element not found - so nothing to remove
}

我的错误是:

Error   8   error C2872: 'hash' : ambiguous symbol  c:\users\aaron           johnson\desktop\program 5(johnson- noakes)\program 5(johnson- noakes)\chaining.cpp 32  1   Program 5(Johnson- Noakes)

我有8个这样的错误。有什么建议?如何找出必须包含哪些标头才能使用哈希?

2 个答案:

答案 0 :(得分:6)

哈希是你自己的功能吗? 如果是这样,请尝试将其放在您自己的命名空间中,然后调用函数

int hash_index = yournamespace::hash( x, theLists.size() );

如果你想使用std :: hash:它在

中定义
#include <functional>

答案 1 :(得分:2)

您可以在线找到整个C ++规范,包括我们的朋友“std :: hash”:

http://en.cppreference.com/w/cpp/utility/hash