Estoy usando map en C++. Supongamos que tengo 10 valores en la map y que me quiere solo a la primera. ¿Cómo puedo conseguirlo?

Gracias.

InformationsquelleAutor adir | 2011-01-28

5 Comentarios

  1. 86

    Un mapa no mantener el orden de inserción. Uso *(myMap.begin()) para obtener el valor de la primera pareja (con la clave más pequeña cuando la solicita).

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

    • ¿se devuelve un puntero?
    • myMap.begin() devuelve un iterador. Es posible que desee comprobar stackoverflow.com/questions/388242/…
    • No, devuelve valores. myMap.begin() es un iterador, que tiene la * y -> operadores sobrecargados a comportarse como un puntero y el ++ y -- operadores sobrecargados para recorrer los elementos en el mapa. Usted debe leer una introducción acerca de la STL. Tal vez alguien tiene un buen link para usted?
    • y si yo quiero que el valor y no el iterador?
    • está explicado en el párrafo anterior.
  2. 5

    begin() devuelve el primer par, (precisamente, un iterador al primer par, y usted puede tener acceso a la clave/valor como ->first y ->second de que iterador)

  3. 4

    Puede utilizar el iterador que es devuelto por 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::map contenedor almacena su contenido en una forma ordenada. Así que la primera entrada no es siempre la primera entrada que ha sido añadido.

    • gracias u halpped mucho
    • Que significaba ordenado, ¿verdad?
    • Muy por el contrario: almacena su contenido de manera ordenada, basado en comparaciones de las llaves!
    • Sí señores, tienes toda la razón. Está ordenado por orden de clave. Lo que yo quise decir es, que el orden de inserción no se conserva, es decir, la primera ha agregado una entrada en el mapa no es necesariamente el de la begin().

Dejar respuesta

Please enter your comment!
Please enter your name here