gpt4 book ai didi

c++ - 第 924 行 : Char 9: runtime error: reference binding to null pointer of type 'int' (STL_vector. h)

转载 作者:行者123 更新时间:2023-12-04 00:00:34 27 4
gpt4 key购买 nike

在 leetcode 上运行以下代码时出现运行时错误。
当我删除用户定义的比较器功能时,它工作正常。但是使用用户定义的比较器函数,它会给出如下运行时错误:

Line 924: Char 9: runtime error: reference binding to null pointer oftype 'int' (stl_vector.h) SUMMARY: UndefinedBehaviorSanitizer:undefined-behavior/usr/bin/../lib/gcc/x86_64-linux-gnu/8/../../../../include/c++/8/bits/stl_vector.h:933:9

class Solution {
private:
static bool comp (vector<int> p1, vector<int> p2) {
if(p1[0] < p2[0] || p1[1] < p2[1])
return true;
else
return false;
}

public:
int maxEnvelopes(vector<vector<int>>& envelopes) {
if (envelopes.empty())
return 0;
sort(envelopes.begin(), envelopes.end(), comp);
vector<int> dp(envelopes.size(), 1);
int res = 0;

for (int i = 0; i < envelopes.size(); i++) {
for (int j = i-1; j >=0; j--) {
if (envelopes[j][0] < envelopes[i][0] && envelopes[j][1] < envelopes[i][1] && dp[j] + 1 > dp[i])
dp[i] = 1 + dp[j];
}
res = max(res, dp[i]);
}

return res;
}
};

最佳答案

这是一个经典的错误。考虑这对 vector
p1 = {1, 4} 和 p2 = {2, 3}
现在 comp(p1, p2) 为真,因为 1 < 2 但 comp(p2, p1) 也为真,因为 3 < 4。那么当 p1 小于 p2 排序应该如何工作和 p2 小于 p1?
您需要编写一个有意义的比较函数。也许像这样

static bool comp (vector<int> p1, vector<int> p2) {
return p1[0] < p2[0] || (p1[0] == p2[0] && p1[1] < p2[1]);
}

关于c++ - 第 924 行 : Char 9: runtime error: reference binding to null pointer of type 'int' (STL_vector. h),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62583585/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com