【发布时间】:2021-10-22 06:49:14
【问题描述】:
谁能解释一下如何处理运行时错误?
第 1034 行:字符 34:运行时错误:将无符号偏移量添加到 0x607000000020 溢出到 0x607000000018 (stl_vector.h) 摘要:UndefinedBehaviorSanitizer:未定义行为 /usr/bin/../lib/gcc/x86_64-linux-gnu/9/../../../../include/c++/9/bits/stl_vector.h :1043:34
class Solution {
public:
static bool cmp(pair<int,int> a, pair<int,int> b){
if(a.first<b.first) return true;
if(a.first==b.first && a.second>b.second) return true;
return false;
}
vector<int> frequencySort(vector<int>& nums) {
int n = nums.size();
vector<int> res;
vector<pair<int,int>> v(n);
for(int i = 0;i<n;i++){
v[nums[i]].first++;
v[nums[i]].second = nums[i];
}
sort(v.begin(),v.end(),cmp);
for(int i =0;i<n;i++){
for(int j =0;j<v[i].first;j++){
res.push_back(v[i].second);
}
}
return res;
}
};
【问题讨论】:
-
考虑这一点:
v[nums[i]],您确定num[i]大于或等于0 且小于v.size()?尝试改用std::map。 -
您应该在帖子中提供要解决的问题的完整描述,而不是仅作为链接。
-
在这种情况下指出第 1034 行是有用的,以便准确识别问题所在 - 并解释这段代码应该做什么。