关于vector
又学到了一些似乎比较纸张的知识,蒟蒻终究是蒟蒻。
-
vector 删除元素
用erase
函数可以很好实现。
a.push_back(1);
a.push_back(2);
a.push_back(3);
a.push_back(4);
vector<int>::iterator it=a.begin();
while(it!=a.end()){
if(*it==2)it=a.erase(it);
else it++;
}
for(it=a.begin();it!=a.end();it++){
printf("%d ",*it);
}
输出1 3 4
-
vetcor二分查找
#define defit vector<int>::iterator
for(int i=1;i<=6;i++)a.push_back(i*2);
defit l=a.begin();
defit r=a.end()-1;
defit mid;
while(l<r){
mid=l+(r-l)/2;
if(*mid<7)l=mid+1;
else r=mid;
}
printf("%d",*l);
输出8
-
综合一下
边二分边删除
#define defit vector<int>::iterator
for(int i=1;i<=6;i++)a.push_back(i*2);
defit l=a.begin();
defit r=a.end()-1;
defit mid;
while(l<r){
mid=l+(r-l)/2;
if(*mid<7)l=mid+1;
else r=mid;
}
printf("%d ",*l);
a.erase(l);
l=a.begin(),r=a.end()-1;
while(l<r){
mid=l+(r-l)/2;
if(*mid<7)l=mid+1;
else r=mid;
}
printf("%d",*l);
输出8 10
一如既往,万事胜意