2010-04-13 8 views
6

std :: map find/end ambos proporcionan const_iterator e iterator, p. Ej.m.find (...) == m.end() - que se usa, iterador o const_iterator

iterator end(); 
    const_iterator end() const 

Por curiosidad, si tengo un std :: mapa, que se llamará/comparación aquí, un iterador o una const_iterator? :

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

¿Y debería importarme?

Respuesta

8

Si m es const, entonces se devolverá const_iterator; de lo contrario, se devolverá iterator.

Si todo lo que hace es probar la existencia de un elemento en el mapa, entonces realmente no importa cuál se utiliza.

+0

Es importante cuando escribe su propio algoritmo. Luego debe especificar si su algoritmo es un algoritmo de modificación. Si no es así, estás diciendo que funciona con 'const_iterator'. También es una buena idea saber qué algoritmos que llamas modifican y cuáles no: de esta forma, cuando obtienes un error, puedes decir que es porque pasaste un 'const_iteratr' (tal vez porque proviene de un objeto' const') para un algoritmo de modificación. – wilhelmtell

0

Depende de si su mapa es const o no. Si es así, obtendrás un const_iterator. Si no, obtienes un iterador.

Cuestiones relacionadas