funkcja map find() w języku C++ STL

The mapa::znajdź() to wbudowana funkcja w języku C++ STL, która zwraca iterator lub stały iterator odnoszący się do pozycji, w której znajduje się klucz na mapie. Jeśli klucz nie znajduje się w kontenerze mapy, zwraca iterator lub stały iterator, do którego się odwołuje mapa.koniec()

.
Składnia:

iterator=map_name.find(key) or constant iterator=map_name.find(key) 

Parametry: Funkcja przyjmuje jeden obowiązkowy parametr klucz, który określa klucz do przeszukania w kontenerze mapy.

Wartość zwracana: Funkcja zwraca iterator lub stały iterator, który odnosi się do pozycji, w której klucz znajduje się na mapie. Jeśli klucz nie znajduje się w kontenerze mapy, zwraca iterator lub stały iterator, który odwołuje się do map.end().

Złożoność czasowa wyszukiwania elementu:
Złożoność czasowa wyszukiwania elementów w std::mapa wynosi O(log n). Nawet w najgorszym przypadku będzie to O(log n), ponieważ elementy są przechowywane wewnętrznie jako drzewo zrównoważonego wyszukiwania binarnego (BST), podczas gdy w std::unordered_map Złożoność wyszukiwania w najlepszym przypadku i średnim przypadku wynosi O(1), ponieważ elementy są przechowywane w tabeli Hash i dlatego klucz pełni rolę indeksu podczas wyszukiwania na nieuporządkowanych mapach. Jednak najgorszy przypadek złożoności czasowej wyszukiwania to O(N).

Poniżej znajduje się ilustracja powyższej funkcji:

C++




// C++ program for illustration> // of map::find() function> #include> using> namespace> std;> int> main()> {> > // Initialize container> > map <> int> ,> int> >m;> > // Insert elements in random order> > m.insert({ 2, 30 });> > m.insert({ 1, 40 });> > m.insert({ 3, 20 });> > m.insert({ 4, 50 });> > int> s1=2;> //element1 to find (exist in the map)> > int> s2=5;> //element2 to find (does not exist in the map)> > > cout < <> 'Element '> < if(m.find(s1)!=m.end()){ //if the element is found before the end of the map cout < <' : found : Value : ' < //if the element is present then you can access it using the index } else cout < <' : Not found' < cout < < 'Element ' < if(m.find(s2)!=m.end()){ //if the element is found before the end of the map cout < <' : found : Value : ' < //if the element is present then you can access it using the index } else cout < <' : Not found' < return 0; }>

Wyjście

Element 2 : found : Value : 30 Element 5 : Not found 

Złożoność czasu : O(log n)
Przestrzeń pomocnicza : NA)

Poniżej kod to program wyświetlający wszystkie elementy po znalezieniu elementu:

CPP




// C++ program for illustration> // of map::find() function> #include> using> namespace> std;> int> main()> {> > // Initialize container> > map <> int> ,> int> >mp;> > // Insert elements in random order> > mp.insert({ 2, 30 });> > mp.insert({ 1, 40 });> > mp.insert({ 3, 20 });> > mp.insert({ 4, 50 });> > cout < <> 'Elements from position of 3 in the map are : '> ;> > cout < <> 'KEY ELEMENT '> ;> > // find() function finds the position> > // at which 3 is present> > for> (> auto> itr = mp.find(3); itr != mp.end(); itr++) {> > > cout ' ' ' '; } return 0; }>

Wyjście

Elements from position of 3 in the map are : KEY ELEMENT 3 20 4 50 

Złożoność czasowa: O(log n)
Przestrzeń pomocnicza: NA)