gpt4 book ai didi

c++ - 无法在 C++ 中的 for 循环条件语句中使用 vector.size()

转载 作者:太空宇宙 更新时间:2023-11-04 14:43:38 25 4
gpt4 key购买 nike

<分区>

我最近遇到了一个令人困惑的情况。我不知道解释。这是我的简单代码:

class Solution {
public:
bool canAttendMeetings(vector<Interval>& intervals) {
sort(intervals.begin(), intervals.end(), compare);
for (int i=0; i<intervals.size()-1; i++) {
if (intervals[i].end > intervals[i+1].start) return false;
}
return true;
}
private:
static bool compare(const Interval &interval1, const Interval &interval2) {
return interval1.start < interval2.start;
}
};

问题出在这一行:

for (int i=0; i<intervals.size()-1; i++) {

我收到输入的运行时错误:[]。但是,我找到了解决方法,它非常简单但很难解释。这是解决方法,我只是在 for 循环之前将 intervals.size() 分配给一个新变量。

class Solution {
public:
bool canAttendMeetings(vector<Interval>& intervals) {
sort(intervals.begin(), intervals.end(), compare);
int n = intervals.size();
for (int i=0; i<n-1; i++) {
if (intervals[i].end > intervals[i+1].start) return false;
}
return true;
}
private:
static bool compare(const Interval &interval1, const Interval &interval2) {
return interval1.start < interval2.start;
}
};

谁能向我解释为什么第一个版本不起作用而第二个版本有效?非常感谢!

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