几种常用容器元素删除的方法

对于vector:
vector<int>::iterator itVec = vectInt.begin();
// 删除所有值为1022的元素
for ( ; itVec != vectInt.end(); )
{
 // 删除
 if (*itVec == 1022) 
  itVec = vectInt.erase(itVect);   //erase返回指向被删元素之后的那个元素的迭代器
 else
  ++itVec;
}

对于list 

ist<int>::iterator itList = listInt.begin();
// 删除所有值为1022的元素
for ( ; itList != listInt.end(); )
{
 // 删除
 if (*itList == 1022) 
  listInt.erase(itList++);  //list内部链表实现
 else
  ++itList ;
}

//vector不能用上面那种方法是因为vector内部是一块连续的内存,而list则是链表。

关联式容器:

关联式容器循环删除

for (iter = map.begin(); iter != map.end(); ) 
{
 if (shouldDelete(*iter))
  map.erase(iter++);
 else
  ++iter;
}


因为关联式容器的erase并不返回下一个元素的迭代器,因此不能用iter = map.erase(iter)这样的表达式(有些版本的STL实现又可以这样写,我建议还是使用 map.erase(iter++)保证移植性)。

关联容器同样也可以用remove等来删除元素。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值