c++报错
今天在做力扣每日一题(2352. 相等行列对)的时候,需要用到 unordered_map<a,b>于是就写了下面的结构的代码,然后就报错了。
unordered_map<vector<int>,int> hang;
错误原因:
之后查阅了一些资料,发现这是和unordered_map的底层实现有关的,这需要知道unordered_map和map的区别,一个是无序的,一个是有序的。
这里就是产生错误的原因,unordered_map的底层实现是哈希表,哈希表需要通过计算得到对应的键值,然而这种复杂结构的变量,在C++底层中并没有事先进行处理。map的底层实现是红黑树,简单来说,就是可以根据比较值得大小,将元素放到树中,当然这个大小是取出这个vector中的数,再比大小。
解决办法:
将unordered_map
改为map
,例如
map<vector<int>,int> hang;