Я использовал его несколько раз без проблем, хотя я использовал его с gcc (как для windows, так и для linux), а не для Visual Studio.
Для фактического использования документация: здесь .
Вы можете указать, сколько ведер зарезервировать, используя
void resize(size_type n)
Что касается вашей проблемы с идентификатором T , я предполагаю, что вы забыли заменить аргумент шаблона с именем T на фактический тип. Если вы не можете понять это, возможно, вставьте фрагмент кода того, как вы используете hash_map.
Пример из документации:
#include <hash_map>
#include <iostream>
struct eqstr
{
bool operator()(const char* s1, const char* s2) const
{
return strcmp(s1, s2) == 0;
}
};
int main()
{
std::hash_map<const char*, int, hash<const char*>, eqstr> months;
months["january"] = 31;
months["february"] = 28;
months["march"] = 31;
months["april"] = 30;
months["may"] = 31;
months["june"] = 30;
months["july"] = 31;
months["august"] = 31;
months["september"] = 30;
months["october"] = 31;
months["november"] = 30;
months["december"] = 31;
std::cout << "september -> " << months["september"] << endl;
std::cout << "april -> " << months["april"] << endl;
std::cout << "june -> " << months["june"] << endl;
std::cout << "november -> " << months["november"] << endl;
}
Конечно, вы можете использовать std :: string вместо char *, если хотите:
std::hash_map<std::string, int, hash<std::string>, eqstr> months;