m.find(...)== m.end() - 使用的是iterator或const_iterator

时间:2010-04-13 19:18:08

标签: c++ templates stl

std :: map find / end都提供了const_iterator和iterator,例如

  iterator end ();
  const_iterator end () const

出于好奇,如果我有一个std :: map,它将在这里被调用/比较,是迭代器还是const_iterator? :

if(m.find(key) != m.end()) {
   ...
}

我应该关心吗?

2 个答案:

答案 0 :(得分:8)

如果mconst,则会返回const_iterator;否则将返回iterator

如果您正在测试地图中是否存在元素,那么使用哪一个元素并不重要。

答案 1 :(得分:0)

这取决于您的地图是否为常量。如果是,你会得到一个const_iterator。如果没有,你会得到一个迭代器。