如何使用自定义下界正确修复 我是C++新手。我在试一个leetcode问题(436.找到正确的间隔)。只为了我的知识而写我自己的下限,这会让事情复杂化。但是下面的代码显示了运行时错误:引用绑定到'value\u type'(stl\u vector.h)类
如何使用自定义下界正确修复 我是C++新手。我在试一个leetcode问题(436.找到正确的间隔)。只为了我的知识而写我自己的下限,这会让事情复杂化。但是下面的代码显示了运行时错误:引用绑定到'value\u type'(stl\u vector.h)类型的空指针。。我无法理解问题所在,请有人澄清我做错了什么如何使用自定义下界正确修复 我是C++新手。我在试一个leetcode问题(436.找到正确的间隔)。只为了我的知识而写我自己的下限,这会让事情复杂化。但是下面的代码显示了运行时错误:引用绑定到'value\u type'(stl\u vector.h)类,c++,lower-bound,C++,Lower Bound,如何使用自定义下界正确修复 我是C++新手。我在试一个leetcode问题(436.找到正确的间隔)。只为了我的知识而写我自己的下限,这会让事情复杂化。但是下面的代码显示了运行时错误:引用绑定到'value\u type'(stl\u vector.h)类型的空指针。。我无法理解问题所在,请有人澄清我做错了什么 class Solution { public: vector<int> findRightInterval(vector<Interval>&
class Solution {
public:
vector<int> findRightInterval(vector<Interval>& intervals) {
int n = intervals.size();
vector<int> res;
vector<pair<Interval, int>> s_i;
for(int i = 0; i<n; i++) {
s_i.push_back(make_pair(intervals[i], i));
}
sort(s_i.begin(), s_i.end(), [](const pair<Interval, int>& a, const pair<Interval, int> &b) -> bool {
return a.first.start < b.first.start;
});
for(auto x : s_i) {
cout<<"["<<x.first.start<<","<<x.first.end<<"],"<<x.second<<endl;
}
for(int i = 0; i<n; i++) {
int val = intervals[i].end;
cout<<val<<endl;
//pair<Interval, int> temp = make_pair(Interval(val, val), 0);
auto it = lower_bound(s_i.begin(), s_i.end(), val,
[](const pair<Interval, int> &a, int val) -> bool {
return a.first.start < val;
});
if (it != s_i.end()) {
res[i] = it->second;
} else {
res[i] = -1;
}
}
return res;
}
};
类解决方案{
公众:
向量findRightInterval(向量和间隔){
int n=interval.size();
向量res;
向量s_i;
对于(int i=0;i bool){
返回a.first.start coutres[i]
--你在这里越界了吗?我看不出哪里的res
的大小与必要的条目相匹配。试试res.at(i)=it->second;
和res.at(i)=-1;
并查看是否引发了std::out\u of_range
异常。超出范围,并且可能您的排序不是std::lower\u-bound
所期望的。您按照间隔的开始位置对间隔进行排序,但随后将其与结束位置进行比较。排序后,在您想要的结束位置之后会有一个开始位置吗位置?@PaulMcKenzie正确。我的错,我被错误弄糊涂了,以为问题在我的下限。谢谢。问题在将向量res;
更改为向量res(n,-1);
后得到了修复。