Używam map
w C++. Załóżmy, że mam 10 wartości w map
i chcę tylko pierwszy. Jak mogę to dostać?Uzyskiwanie pierwszej wartości z mapy w C++
Dzięki.
Używam map
w C++. Załóżmy, że mam 10 wartości w map
i chcę tylko pierwszy. Jak mogę to dostać?Uzyskiwanie pierwszej wartości z mapy w C++
Dzięki.
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ść.
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)
*my_map.begin()
. Zobacz np. http://cplusplus.com/reference/stl/map/begin/.
proste:
your_map.begin()->first // key
your_map.begin()->second // value
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.
czy zwraca wskaźnik? – adir
'myMap.begin()' zwraca iterator. Możesz sprawdzić http://stackoverflow.com/questions/388242/the-definitive-c-book-guide-and-list – MSalters
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