1. 程式人生 > 其它 >error: call to implicitly-deleted default constructor of ‘unordered_map<pair<int, int>, int>‘ m;

error: call to implicitly-deleted default constructor of ‘unordered_map<pair<int, int>, int>‘ m;

技術標籤:C++ 報錯解決c++cpphashmapleetcode

C++ 報錯

如果用pair作為鍵初始化unordered_map,例如

unordered_map<pair<int, int>, int> m;

會報下面的錯誤:

error: call to implicitly-deleted default constructor of ‘unordered_map<pair<int, int>, int>’ m;

分析

unordered_map中用std::hash來計算key,但是C++中沒有給pairHash的函式,所以不能用pair

作為unordered_map的key。
但是!map可以!
map裡面是通過操作符<來比較大小,而pair是可以比較大小的。所以,map用在這裡是可以的。

解決

可以將unordered_map改為map,例如

map<pair<int, int>, int> m;

編譯通過!問題解決!!!