矢量迭代器不兼容(运行时错误)
Vector iterators incompatible (runtime error)
我收到一个运行时错误,说向量迭代器不兼容。
#include <iostream>
#include <vector>
using namespace std;
struct Interval
{
public:
Interval(int s,int e):start(s),end(e) {}
int start;
int end;
};
void merge_intervals(vector<Interval>& Interval1, vector<Interval>& Interval2, vector<Interval>& merged)
{
int i = 0 ;
cout<<"i"<<i<<endl;
vector<Interval>::iterator it1 = Interval1.begin();
vector<Interval>::iterator it2 = Interval2.begin() ;
while(it1 != Interval1.end() && it2 !=Interval1.end())
{
cout<<"i"<<i<<endl;
i++;
if(it1->start <= it2->start)
{
if(it1->end <= it2->end)
{
it1++;
merged.push_back(*it1);
}
else
{
it1++;
it2++;
merged.push_back(Interval(it1->start,it2->end));
}
}
else
{
if(it1->end >= it2->end)
{
it2++;
merged.push_back(*it2);
}
else
{
it1++;
it2++;
merged.push_back(Interval(it2->start,it1->end));
}
}
while(it1 != Interval1.end())
{
merged.push_back(*it1);
*it1++;
}
while(it2 != Interval2.end())
{
merged.push_back(*it2);
*it2++;
}
}
}
void print_intervals(vector<Interval>& merged)
{
vector<Interval>::iterator it = merged.begin();
for(it = merged.begin();it != merged.end(); ++it)
{
cout<<"("<<it->start<<","<<it->end<<")"<<endl;
}
}
void test1()
{
vector<Interval> Interval1, Interval2, merged ;
Interval1.push_back(Interval(1,4));
Interval1.push_back(Interval(6,10));
Interval1.push_back(Interval(14,19));
Interval2.push_back(Interval(13,17));
merge_intervals(Interval1, Interval2, merged);
print_intervals(merged);
}
int main()
{
test1();
return 0;
}
it2 !=Interval1.end()
将来自Interval2
的迭代器与来自Interval1
的迭代程序进行比较–这是违法的。
假设这只是一个拼写错误,只需将其更正为it2 != Interval2.end()
即可。
比较it2
和Interval1.end()
:
while(it1 != Interval1.end() && it2 !=Interval1.end())
应该有:
while(it1 != Interval1.end() && it2 !=Interval2.end())
相关文章:
- wxWidgets 运行时错误(不匹配版本)
- VC 中的运行时错误,但不在GCC中
- 我在代码中收到一个运行时错误,该错误如何通过修改最多一个元素来查找数组是否可以变得不减少
- 未经授权的私有类成员访问会产生编译时错误而不是运行时错误?
- 无法从网页类继承而不出现运行时错误
- 运行时错误:找不到与 ImageSensor 匹配的 Python 模块
- 错误:在 GEANY 中将"int"赋值为"char [1]"时类型不兼容
- 常规强制转换不会引发运行时错误
- 意外的输出而不是运行时错误
- 视觉C++ 2010 错误。运行时找不到程序.exe
- 使用地图找不到可能的运行时错误
- 为什么它会导致运行时错误,字符到整数而不初始化
- 为什么 0.0f/0.0f 不会生成任何运行时错误?
- 无法弄清楚为什么我的程序在 spoj 上给出运行时错误而不是在 ideone 上给出运行时错误的原因
- 运行时错误 -f1.exe 不存在或不是可执行文件
- 使用 t( *this ) 会导致运行时错误,而 t( std::ref( *this ) 则不会
- 矢量迭代器不兼容:运行时错误
- 矢量迭代器不兼容(运行时错误)
- 为什么这个c++程序不会产生运行时错误
- 当运行时库不存在时显示(自定义"required"错误?