Как включить хеш в C ++ Standard Library? - PullRequest
0 голосов
/ 01 декабря 2011

Я пытался использовать #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 из этих ошибок. Какие-либо предложения? Как я могу узнать, какие заголовки должны быть включены, чтобы использовать хеш?

Ответы [ 3 ]

6 голосов
/ 01 декабря 2011

Является ли хэш-функция вашей собственной?Если это так, попробуйте поместить его в собственное пространство имен, а затем вызвать функцию, например

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

Если вы хотите использовать std :: hash: он определен в

#include <functional>
2 голосов
/ 01 декабря 2011

Здесь вы можете найти всю спецификацию C ++ здесь, включая нашего друга "std :: hash":

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

0 голосов
/ 02 декабря 2011

hash_set и hash_map доступны в SGI STL.Посмотрите на следующие страницы:

Документация и исходный код доступны по этой ссылке:

  1. http://www.sgi.com/tech/stl/download.html
...