C++中STL简单用法 求指导 感激不尽
#include<iostream>
#include<algorithm>
#include<vector>
using namespace std;
int main()
{
int t,i,j,k,n,w1,h1,l,m;
vector<int> w,h;
vector<int>::iterator pos1;
vector<int>::iterator pos2;
cin>>t;
while(t--)
{
k=0;
cin>>n;
for(i=0;i<n;i++)
{
cin>>m>>j;
w.push_back(m);
h.push_back (j);
}
//cin>>w[i]>>h[i];
//j=i;
while(w.max_size()!=0)
{
//m=0;
pos1=max_element(w.begin (),w.end());
pos2=max_element(h.begin (),h.end());
w1=pos1-w.begin();
h1=pos2-h.begin ();
if(w1==h1)
{
k+=1;
cout<<k<<endl;
break;
}
else
k+=2;
for(l=0;l<j;l++)
{
pos1=w.begin()+l;
pos2=h.begin()+l;
if(((w[l]<=*pos1)&&(h[l]<=h[w1-1]))||((w[l]<=w[h1-1])&&(h[l]<=*pos2)))
{
w.erase(pos1);
h.erase(pos2);
//m++;
}
}
//j-=m;
}
cout<<k<<endl;
}
return 0;
}
为什么迭代器会超界?求各位指导,感激不尽!!!
STL Iterator
[解决办法]
容器包含的元素数是size而不是max_size,max_size永远不会等于0的
你那个l是根据j来的,完全没有不越界的保证啊,为什么不会越界?
[解决办法]
楼上完全正确,
[解决办法]
是哪个iterator越界了?把问题描述清楚。
[解决办法]
http://www.cplusplus.com/