C++ Tips

1 删除std::map元素 

map<int, int>  intMap;
 map<int, int>::iterator iter;
 for(iter = intMap.begin(); iter != intMap.end(); iter++)
 {
  if(condition)
  {
    intMap.erase(iter--);
  }
}

我们不能直接用intMap.erase(iter)来删除当前元素, 因为iter之后还要用来iter++, 但iterator删除后是不能再使用的,所以我们用iter--使iter指向前一个元素, 但返回当前元素让map删除。这个下一循环时iter++刚好指向我们需要的下一个元素。

2 STL容器的迭代器比较尽量使用 "!=", 而不是 "<"
  虽然对于vector而言, "!=" 与 "<" 都能使用
 vector<int> vecInt;
  vecInt.push_back(1);
  vecInt.push_back(2);
  vector<int>::const_iterator citer1;
  for(citer1 = vecInt.begin(); citer1 < vecInt.end(); citer1++)
  //或citer1 != vecInt.end();
  {
      cout<<*citer1<<endl;
  }

  但是容器list,map等不支持"<"比较运算符(iterator类似于指针, 像vector这样连续存放时才能支持"<").
  所以为了一致性,stl的容器最好全部使用 "!=" 比较
 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值