logo

map find() funktion i C++ STL

De map::find() är en inbyggd funktion i C++ STL som returnerar en iterator eller en konstant iterator som refererar till positionen där nyckeln finns i kartan. Om nyckeln inte finns i kartbehållaren returnerar den en iterator eller en konstant iterator som refererar till map.end()

.
Syntax:

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

Parametrar: Funktionen accepterar en obligatorisk parameter nyckel, som anger nyckeln som ska sökas i kartbehållaren.



Returvärde: Funktionen returnerar en iterator eller en konstant iterator som refererar till den position där nyckeln finns i kartan. Om nyckeln inte finns i kartbehållaren returnerar den en iterator eller en konstant iterator som refererar till map.end().

Tidskomplexitet för att söka element:
Tidskomplexiteten för att söka element i std::karta är O(log n). Även i värsta fall kommer det att vara O(log n) eftersom element lagras internt som ett Balanced Binary Search-träd (BST) medan, i std::unordered_map bästa fallet och den genomsnittliga fallets tidskomplexitet för sökning är O(1) eftersom element lagras i en Hash-tabell och därför fungerar nyckeln som ett index vid sökning i oordnade kartor. Men den värsta tidskomplexiteten för sökning är O(N).

Nedan är illustrationen av ovanstående funktion:

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

vad är android påskägg

>

>

Produktion

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

Tidskomplexitet : O(log n)
Hjälputrymme :O(n)

Nedan kod finns ett program för att skriva ut alla element efter att ha hittat ett element:

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

>

tredje normalformen
>

Produktion

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

Tidskomplexitet: O(log n)
Hjälputrymme: På)