【发布时间】:2020-08-07 21:03:30
【问题描述】:
我正在尝试为这个 leetcode 问题编写解决方案https://leetcode.com/problems/maximum-frequency-stack/
class FreqStack {
public:
map<int, int>mp;
map<int, stack<int>, greater<int>>st;
FreqStack() {
}
void push(int x) {
mp[x]++;
st[mp[x]].push(x);
}
int pop() {
stack<int>&v=st.begin()->second;
int t=v.top();
if(!v.empty()){
v.pop();
}
else{
st.erase(st.begin());
}
return t;
}
};
为什么
v.pop()
导致“引用绑定到未对齐的地址”错误?
【问题讨论】:
-
这似乎无关,但您在假设堆栈不为空之后检查堆栈是否为空。
-
是的,我知道我只是在尝试不同的方法,看看是否可以让错误消失
-
调用代码是做什么的?
.push(0)然后是.pop()也不是_GLIBCXX_DEBUG的地址清理程序我什么也没得到。 -
恐惧shotgun debugging。它不仅经常使事情变得更糟,而且如果问题确实消失了,它会更难准确地确认您为解决问题所做的工作。如果您不知道修复是什么以及它为什么起作用,那么您可能只是隐藏了问题并移到了它出现的地方。
标签: c++ dictionary vector stack