В текущем стандарте C ++ нет хеш-карт, но в новом стандарте C ++ 0x они есть, и они уже поддерживаются g ++ в форме «неупорядоченных карт»:
#include <unordered_map>
#include <iostream>
#include <string>
using namespace std;
int main() {
unordered_map <string, int> m;
m["foo"] = 42;
cout << m["foo"] << endl;
}
Чтобы получить этот компилятор, вам нужно сообщить g ++, что вы используете C ++ 0x:
g++ -std=c++0x main.cpp
Эти карты работают почти так же, как std :: map, за исключением того, что вместо предоставления пользовательского operator<()
для ваших собственных типов, вам необходимо предоставить пользовательскую хеш-функцию - подходящие функции предоставляются для типов, таких как целые числа и строки.