2012-02-15 11 views
7

¿Cuál es la diferencia entre las funciones front() y begin() que aparecen en muchos contenedores STL?La diferencia entre front() y begin()

+4

'front()' es idéntico a '* begin()'. – ildjarn

+0

¿Por qué esto se downvoted: S? Es una pregunta válida, bueno. –

+1

El botón de abajo dice "esta pregunta no muestra ningún esfuerzo de investigación": parece bastante aplicable. – ildjarn

Respuesta

12

begin() devuelve un iterador que se puede usar para recorrer la colección, mientras que front() simplemente devuelve una referencia al primer elemento de la colección.

+5

+1 Solo para hacer las cosas más explícitas (o tal vez complicadas): '& c.front() == & * c.begin()' para cualquier contenedor que tenga al menos un elemento. Comparando la * dirección-de * las expresiones se usa para demostrar que no son los * valores * los mismos, pero los * objetos * (es decir, 'c.front()' produce una referencia al mismo objeto que la desreferenciación del begin iterator '* c.begin()'). –

2

front() devuelve una referencia al primer elemento, begin() le devuelve un iterador.

Tenga en cuenta que no debe llamar front en un recipiente vacío, pero es bien llamar begin, siempre y cuando no lo hace eliminar la referencia al iterador que begin devoluciones.

+4

'begin()' también funciona si no hay primer elemento. –

0

El miembro front devuelve una referencia al primer miembro de una lista o vector. La función begin devuelve un iterador (que es más como un puntero) inicializado al primer miembro de una lista, mapa o vector.

1

De http://www.cplusplus.com/reference/stl/vector/begin/ (literalmente, el primer resultado en Google de "vector :: empezar"):

en cuenta que a diferencia miembro de vector::front, que devuelve una referencia al primer elemento, esta función devuelve un iterador de acceso aleatorio.