题目是这样的:有1亿个不同QQ号分别保存在vector和set中,去掉其中的奇数QQ号。
在STL中erase函数是这样定义的:
void container::erase(iteraor pos)
iteratot container::erase(iterator pos)
- 将迭代器pos位置所指的元素移除。
- 序列式容器(vector、deque、list和string)采用第二种形式,返回后继元素的位置或者end()。
- 关联式容器(set、multiset、map 和 multimap)采用第一种形式,无返回值。
- 两者都调用被移除者的析构函数。
对于set:
void erase_odd_nums(set<int> &qqnum){
set<int>::iterator it;
for(it = qqnum.begin(); it != qqnum.end();){
if(*it % 2){
qqnum.erase(it++);
}else{
++it;
}
}
}
对于vector:
void erase_odd_nums(vector<int> &qqnum){
vector<int>::iterator it;
for(it = qqnum.begin(); it != qqnum.end();){
if(*it % 2){
it = qqnum.erase(it);
}else{
++it;
}
}
}