funkcia map find() v C++ STL
The mapa::nájsť() je vstavaná funkcia v C++ STL, ktorá vracia iterátor alebo konštantný iterátor, ktorý odkazuje na pozíciu, kde sa na mape nachádza kľúč. Ak kľúč nie je prítomný v kontajneri mapy, vráti iterátor alebo konštantný iterátor, ktorý odkazuje na map.end()
.
Syntax:
iterator=map_name.find(key) or constant iterator=map_name.find(key)
Parametre: Funkcia akceptuje jeden povinný parameter kľúč, ktorý určuje kľúč, ktorý sa má vyhľadať v kontajneri mapy.
Návratová hodnota: Funkcia vracia iterátor alebo konštantný iterátor, ktorý odkazuje na pozíciu, kde sa na mape nachádza kľúč. Ak kľúč nie je prítomný v kontajneri mapy, vráti iterátor alebo konštantný iterátor, ktorý odkazuje na map.end().
Časová zložitosť pre prvok vyhľadávania:
Časová náročnosť na vyhľadávanie prvkov v std::map je O(log n). Dokonca aj v najhoršom prípade to bude O(log n), pretože prvky sú uložené interne ako strom vyváženého binárneho vyhľadávania (BST), zatiaľ čo v std::unordered_map najlepší prípad a priemerná časová zložitosť prípadu pre vyhľadávanie je O(1), pretože prvky sú uložené v hash tabuľke a preto kľúč funguje ako index pri vyhľadávaní v neusporiadaných mapách. Najhorším prípadom časovej zložitosti pre vyhľadávanie je však O(N).
Nižšie je znázornená vyššie uvedená funkcia:
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; }> |
Výkon
Element 2 : found : Value : 30 Element 5 : Not found
Časová zložitosť : O (log n)
Pomocný priestor : O(n)
Nižšie uvedený kód je program na tlač všetkých prvkov po nájdení prvku:
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; }> |
Výkon
Elements from position of 3 in the map are : KEY ELEMENT 3 20 4 50
Časová zložitosť: O (log n)
Pomocný priestor: O(n)