m.find (...) == m.end () - который используется, итератор или const_iterator - PullRequest
6 голосов
/ 13 апреля 2010

std :: map find / end оба предоставляют const_iterator и итератор, например

  iterator end ();
  const_iterator end () const

Из любопытства, если у меня есть std :: map, который здесь будет называться / сравниваться, итератор или const_iterator? :

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

А мне какое дело?

Ответы [ 2 ]

8 голосов
/ 13 апреля 2010

Если m равно const, то будет возвращено const_iterator; в противном случае iterator будет возвращено.

Если все, что вы делаете, это проверяете наличие элемента на карте, то не имеет значения, какой из них используется.

0 голосов
/ 13 апреля 2010

Зависит от того, является ли ваша карта постоянной или нет. Если это так, вы получите const_iterator. Если нет, вы получите итератор.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...