Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/visual-studio-2008/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何使用自定义下界正确修复 我是C++新手。我在试一个leetcode问题(436.找到正确的间隔)。只为了我的知识而写我自己的下限,这会让事情复杂化。但是下面的代码显示了运行时错误:引用绑定到'value\u type'(stl\u vector.h)类_C++_Lower Bound - Fatal编程技术网

如何使用自定义下界正确修复 我是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>&

如何使用自定义下界正确修复 我是C++新手。我在试一个leetcode问题(436.找到正确的间隔)。只为了我的知识而写我自己的下限,这会让事情复杂化。但是下面的代码显示了运行时错误:引用绑定到'value\u type'(stl\u vector.h)类型的空指针。。我无法理解问题所在,请有人澄清我做错了什么

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.startcout
res[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);
后得到了修复。