2011-01-28 15 views

Odpowiedz

57

Mapa nie będzie utrzymać porządek wstawiania. Użyj *(myMap.begin()), aby uzyskać wartość pierwszej pary (ta z najmniejszym kluczem, gdy jest zamówiona).

Można również wykonać myMap.begin()->first, aby uzyskać klucz i myMap.begin()->second, aby uzyskać wartość.

+0

czy zwraca wskaźnik? – adir

+1

'myMap.begin()' zwraca iterator. Możesz sprawdzić http://stackoverflow.com/questions/388242/the-definitive-c-book-guide-and-list – MSalters

+6

Nie, zwraca wartości. 'myMap.begin()' jest iteratorem, który ma przeciążone operatory '*' i '->', aby zachowywać się jak wskaźnik, a operatory '++' i '--' są przeciążone, aby iterować elementy na mapie. Powinieneś przeczytać wstęp o STL. Może ktoś ma dobry link dla ciebie? – Benoit

5

begin() zwraca pierwszą parę, (dokładniej, iterator do pierwszej pary, można uzyskać dostęp do kluczy/wartości jako ->first i ->second tego iterator)

6

proste:

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

Można użyć iterator, który jest zwracany przez metody begin() szablonu mapy:

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

Należy jednak pamiętać, że std :: map pojemniku przechowuje jego zawartość w uporządkowany sposób. Tak więc pierwszy wpis nie zawsze jest pierwszym wpisem, który został dodany.

+0

dziękuję, że przestałeś. – adir

+0

Masz na myśli polecenie, prawda? – jweyrich

+1

Wręcz przeciwnie: Przechowuje zawartość w sposób uporządkowany, na podstawie porównań kluczy! –

Powiązane problemy