Попробуйте использовать пару в качестве значения ключа для hash_map в Visual Studio 2010.
Не удалось скомпилировать.
int _tmain(int argc, _TCHAR* argv[])
{
hash_map <pair<int, int>, int> months;
months[pair<int, int>(2,3)] = 1;
int d;
cin >> d;
return 0;
}
появилось сообщение об ошибке:
Ошибка 1 ошибка C2440: 'приведение типа': невозможно преобразовать из 'const std :: pair ‹_Ty1, _Ty2>' в 'size_t' c: \ program files \ microsoft visual studio 10.0 \ vc \ include \ xhash 34 1 testApplication1
Я знаю это, вероятно, потому, что hash_map
не предоставляет специализацию для pair
. Любой простой способ исправить это?
std::map
, но не сstd::unordered_map
- person Benj   schedule 14.02.2013hash_map
и используйте правильныйstd::unordered_map
. Хотя это все равно не решит вашу проблему. К сожалению, отсутствие хеш-функций дляstd::pair
является одним из самых больших упущений в C ++ 11 (но хорошо, по крайней мере, они поняли через 15 лет, что хеш - это полезная структура данных). - person Christian Rau   schedule 14.02.2013