logo

funzione map find() in C++ STL

IL mappa::trova() è una funzione incorporata in C++ STL che restituisce un iteratore o un iteratore costante che fa riferimento alla posizione in cui è presente la chiave nella mappa. Se la chiave non è presente nel contenitore della mappa, restituisce un iteratore o un iteratore costante a cui fa riferimento mappa.end()

.
Sintassi:

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

parametri: La funzione accetta un parametro obbligatorio chiave, che specifica la chiave da cercare nel contenitore della mappa.



Valore di ritorno: La funzione restituisce un iteratore o un iteratore costante che fa riferimento alla posizione in cui è presente la chiave nella mappa. Se la chiave non è presente nel contenitore della mappa, restituisce un iteratore o un iteratore costante che fa riferimento a map.end().

Complessità temporale per la ricerca dell'elemento:
La complessità temporale per la ricerca degli elementi std::mappa è O(log n). Anche nel peggiore dei casi, sarà O(log n) perché gli elementi sono memorizzati internamente come albero di ricerca binaria bilanciata (BST) mentre, in std::unordered_map La complessità nel caso migliore e nel tempo medio per la ricerca è O(1) perché gli elementi sono memorizzati in una tabella Hash e quindi la chiave funge da indice durante la ricerca in mappe non ordinate. Ma la complessità temporale nel caso peggiore per la ricerca è O(N).

Di seguito è riportata l'illustrazione della funzione di cui sopra:

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; }>

tasti modificatori

>

>

Produzione

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

Complessità temporale : O(log n)
Spazio ausiliario : SU)

Di seguito il codice è un programma per stampare tutti gli elementi dopo aver trovato un elemento:

CPP


rinominare la cartella in Linux



// 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; }>

>

>

Produzione

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

Complessità temporale: O(log n)
Spazio ausiliario: SU)