2011-01-28 17 views

Respuesta

57

Un mapa no va a mantener el orden de inserción. Use *(myMap.begin()) para obtener el valor del primer par (el que tiene la clave más pequeña cuando se lo pide).

También puede hacer myMap.begin()->first para obtener la clave y myMap.begin()->second para obtener el valor.

+0

¿devuelve un puntero? – adir

+1

'myMap.begin()' devuelve un iterador. Es posible que desee comprobar http://stackoverflow.com/questions/388242/the-definitive-c-book-guide-and-list – MSalters

+6

No, devuelve valores. 'myMap.begin()' es un iterador, que tiene los operadores '*' y '->' sobrecargados para comportarse como un puntero y los operadores '++' y '--' sobrecargados para iterar elementos en su mapa. Deberías leer una introducción sobre el STL. ¿Tal vez alguien tiene un buen enlace para ti? – Benoit

5

begin() devuelve el primer par, (precisamente, un iterador al primer par, y se puede acceder a la clave/valor como ->first y ->second de ese iterador)

6

tan simple como:

your_map.begin()->first // key 
your_map.begin()->second // value 
3

Usted puede utilizar el iterador que devuelve el método begin() de la plantilla de mapa:

std::map<K,V> myMap; 
std::pair<K,V> firstEntry = *myMap.begin() 

Pero recuerde que el std :: mapa del envase almacena su contenido de una manera ordenada. Entonces, la primera entrada no es siempre la primera entrada que se ha agregado.

+0

gracias u se calló mucho – adir

+0

¿Quiso decir ordenado, correcto? – jweyrich

+1

Todo lo contrario: ¡Almacena su contenido de forma ordenada, según las comparaciones de las claves! –

Cuestiones relacionadas