set:: erase
功能:
将一个或一定范围的元素删除
语法:
iterator erase(iterator _Where)
表示要删除元素的位置
iterator erase(iterator _First, iterator _First)
第一个被删除的元素的位置
iterator erase(iterator _First, iterator _Last)
第一个不被删除的元素的位置
返回一个指向第一个没被删除的元素的双向定位器,如果不存在这样的元素,返回set容器的末尾。
=========================================================
size_type erase(const key_type &_Key)
从set容器中删除的元素的关键字的值
返回 被删除的元素的个数
ex:
//用erase函数将ctr的第二个元素删除
#include<set>
#include <IOSTREAM>
using namespace std;
#define len 10
int print(set<int> c)
{
set<int>:: const_iterator cp;
for(cp = c.begin(); cp != c.end(); cp++)
cout<<*cp<<" ";
return 0;
}
int main()
{
set<int> ctr;
set<int>::iterator cp, cpend;
int i;
for(i = 0; i < len; i++)
ctr.insert(i);
cout<<"ctr is : "<<endl;
print(ctr);
cout<<endl;
cout<<"After erase the last 5 element ,ctr is : ";
cp = ctr.begin() ;
cp ++;
cp++;
cp++;
cp++;
cp++;
cpend = ctr.end();
ctr.erase(cp, cpend);
print(ctr);
cout<<endl;
cout<<"After erase the second element , ctr is :";
cp = ctr.begin();
cp++;
ctr.erase(cp); //擦出cp位置的元素
print(ctr);
cout<<endl;
cout<<"After erase '0' , ctr is :";
ctr.erase(0);
print(ctr);
cout<<endl;
return 0;
}
第一种方法中, 我想用 cp = cp + 4 来找到要删除的元素。但是出错了。 cp = cp + 1也错了。 cp++ 就可以。多次 cp ++ 也可以。为嘛呢??????
我发现, vector 容器可以这样用~~~~