迭代器中(vector<int>::iterator it)有it->start吗?
做算法题:合并间隔。答案中有个it->start,我没查到迭代器中有start的操作,是伪代码还是我真的没找到,想想最可能是作者自己定义操作,那么要如何实现呢,求解答。
#include<iostream>
#include<vector>
using namespace std;
void insert(vector<vector<int> > &intervals,vector<int> newInterval);
vector<vector<int> > merge(vector<vector<int> > intervals)
{
vector<vector<int> > result;
for(int i=0;i<intervals.size();i++)
insert(result,intervals[i]);
return result;
}
void insert(vector<vector<int> > &intervals,vector<int> newInterval)
{
vector<vector<int> >::iterator it =intervals.begin();
while(it!=intervals.end())
{
if(newInterval.end()<it->start)
{
intervals.insert(it,newInterval);
return ;
}
else if(newInterval.start> it->end)
{
it++;
continue;
}
else
{
newInterval.start=min(newInterval.start,it->start);
newInterval.end=max(newInterval.end,it->end);
it=intervals.erase(it);
}
}
intervals.insert(intervals.end(),newInterval);
}
int main()
{
int a[][2]={{1,3},{6,7},{8,11},{7,10}};
vector<vector<int> > aa;
aa.resize(sizeof(a)/sizeof(a[0]));
for(int i=0;i<aa.size();i++)
aa[i].resize(2);
for(int i=0;i<sizeof(a)/sizeof(a[0]);i++)
{
aa[i][0]=a[i][0];
aa[i][1]=a[i][1];
}
vector<vector<int> > result=merge(aa);
for(int i=0;i<result.size();i++)
{
cout<<"{"<<result[i][0]<<","<<result[i][1]<<"}"<<" ";
}
cout<<endl;
return 0;
}