Funzioni della mappa C ++

Funzioni della mappa C ++
“Le mappe sono contenitori associativi che vengono utilizzati per archiviare gli oggetti in modo mappato. Ogni chiave in una coppia di valore chiave contenente tutti i componenti di una mappa è distinta. Le chiavi vengono utilizzate per l'ordine, ma ogni chiave ha un insieme di valori correlati. I dati potrebbero essere aggiunti e rimossi quando necessario. Nel linguaggio di programmazione C ++, le mappe detengono gli elementi creati combinando un valore chiave e un valore definito.

Per due scopi primari, i programmatori C ++ possono trovare utile la struttura della mappa. Innanzitutto, mediante l'uso della chiave, una mappa consente un'accessibilità rapida e facile al valore. La creazione di qualsiasi tipo di indice o puntatore può beneficiare di questo attributo. Una chiave deve essere univoca in tutto il framework di dati integrato, cosa che la mappa fornisce da fare. Ciò impedisce la duplicazione dei dati; Pertanto, è un altro vantaggio dell'utilizzo della mappa.

Ad esempio, se stai creando un'app di trading e devi mantenere i valori delle risorse in base al segno ticker, una mappa è un approccio utile a causa di questi due vantaggi. Una mappa sarebbe un metodo efficiente per fornire e controllare il tempo esistente in molte città di tutto il mondo se avessimo sviluppato un'app meteorologica. Probabilmente useremo una mappa in un mercato online per individuare i prodotti per marchi o categorie."

Quando evitare di usare una mappa C ++?

La funzione della mappa di C ++ è adatta per individuare in modo efficiente i valori per chiave. Ma la ricerca di elementi della mappa mediante l'uso di un numero intero implica attraversare una volta la mappa completa. L'iterazione attraverso una mappa potrebbe richiedere molto tempo man mano che una mappa cresce di dimensioni se vorremmo essere in grado di individuare i valori in essa. Una mappa bidirezionale è fornita dal modulo Boost, il che lo rende più efficace quando prendiamo i dati frequentemente. Poiché il modulo C ++ standard non contiene questo modello di dati, l'utente deve acquisire la libreria Boost su ogni computer in cui il programma viene eseguito o integrare il pacchetto boost come parte del collegamento statico.

Una mappa potrebbe non essere la struttura migliore da utilizzare se ci rendiamo conto che dobbiamo trovare una mappa per elemento in un'applicazione semplice. Utilizzare un array C ++, un buffer, uno stack o qualsiasi altro tipo di dati che potrebbe rendere l'applicazione più semplice da capire e più efficace.

Discutiamo il funzionamento delle funzioni della mappa in C++.

Esempio n. 1

Eseguiremo il codice in questa istanza per mostrare come implementare le funzioni della mappa. Possiamo iterare i componenti della mappa. Per fare questo, dobbiamo solo costruire un iteratore e quindi utilizzarlo.

#includere
#includere
#includere
Utilizzo dello spazio dei nomi std;
int main ()

carta geografica Assegnazione 1;
Assegnazione 1.Inserisci (coppia(2, 60));
Assegnazione 1.Inserisci (coppia(4, 80));
Assegnazione 1.Inserisci (coppia(6, 70));
Assegnazione 1.Inserisci (coppia(8, 90));
Assegnazione 1.Inserisci (coppia(10, 50));
Assegnazione 1.Inserisci (coppia(12, 80));
Assegnazione1 [14] = 40;
carta geografica:: iteratore ITR;
cout << "\nThe map of the assignment1 is : \n";
cout << "\tKEY\tELEMENT\n";
per (itr = assegnazione1.inizio(); itr != Assegnazione1.FINE(); ++ itr)
cout << '\t' << itr->Primo << '\t' << itr->secondo
<< '\n';

cout << endl;
carta geografica Assegnazione2 (Assegnazione1.inizio (), assegnazione1.FINE());
cout << "\nThe map of the assignment2 after"
<< " assign from assignment1 is : \n";
cout << "\tKEY\tELEMENT\n";
per (itr = assegnazione2.inizio(); itr != Assegnazione2.FINE(); ++ itr)
cout << '\t' << itr->Primo << '\t' << itr->secondo
<< '\n';

cout << endl;

Qui integremo i file di intestazione richiesti. e all'inizio del codice. Ora invochiamo la funzione principale (). Utilizzeremo il comando mappa. All'interno di questo comando, inizializziamo due numeri interi. Ora dobbiamo inserire diversi valori casuali di elementi. Quindi abbiamo usato la funzione insert ().

L'argomento "coppia" avrà due numeri interi. Specifichiamo i valori di 6 diversi incarichi. Ora dobbiamo utilizzare un altro metodo per introdurre il valore in una mappa. Quindi stamperemo l'assegnazione della mappa utilizzando il comando mappa. Insieme a questo, usiamo un iteratore. L'istruzione "Cout" viene utilizzata per stampare la linea. Quindi l'istruzione "Cout" verrà utilizzata per mostrare le chiavi e gli elementi. Quindi facciamo un incremento del valore di "ITR". Successivamente, useremo l'istruzione "Cout". Abbiamo creato un puntatore che indica l'iteratore. Useremo il termine "endl" per fare la codifica nella riga successiva.

Ora assegneremo gli elementi dall'assegnazione1 all'assegnazione2. Useremo di nuovo il comando mappa. Insieme a questo, abbiamo utilizzato l'assegnazione della funzione Begin () e End ()1. Queste funzioni vengono utilizzate per avviare e terminare i valori di assegnazione1. Ora dimostreremo tutti gli elementi della mappa necessaria. L'istruzione "Cout" verrà applicata per stampare la riga "La mappa dell'assegnazione2 dopo l'assegnazione da Assegnazione 1 è". Quindi "Cout" viene utilizzato per mostrare le chiavi e gli elementi.

Ancora una volta, applichiamo il ciclo "per". Dobbiamo soddisfare la condizione. Quindi facciamo un incremento nell'iteratore. Costruiremo il puntatore del primo e del secondo elemento di assegnazione1. Per avviare il codice dalla nuova riga, utilizziamo "endl". Ora rimuoveremo tutti gli elementi fino all'elemento con il valore della chiave "3" in Assegnazione1.

cout << "\nassignment2 after eliminating the "
"Elementi con il valore chiave inferiore a 3: \ n";
cout << "\tKEY\tELEMENT\n";
Assegnazione2.Cancella (assegnazione2.inizio (), assegnazione2.Trova (3));
per (itr = assegnazione2.inizio(); itr != Assegnazione2.FINE(); ++ itr)
cout << '\t' << itr->Primo << '\t' << itr->secondo
<< '\n';

int n;
n = assegnazione2.Cancella (4);
cout << "\nassignment2.erase(4) : ";
cout << n << " removed \n";
cout << "\tKEY\tELEMENT\n";
per (itr = assegnazione2.inizio(); itr != Assegnazione2.FINE(); ++ itr)
cout << '\t' << itr->Primo << '\t' << itr->secondo
<< '\n';

cout << endl;
cout << "assignment1.lower_bound(10) : "
<< "\tKEY = ";
cout << assignment1.lower_bound(10)->Primo << '\t';
cout << "\tELEMENT = " << assignment1.lower_bound(10)->secondo
<< endl;
cout << "assignment1.upper_bound(10) : "
<< "\tKEY = ";
cout << assignment1.upper_bound(10)->Primo << '\t';
cout << "\tELEMENT = " << assig>NMENT1.Upper_bound (10)-> secondo
<< endl;
restituzione 0;

L'istruzione "Cout" viene impiegata per stampare l'affermazione "Assegnazione2 dopo aver eliminato gli elementi con il valore chiave inferiore a 3". L'istruzione "Cout" stampa anche le chiavi e i loro valori. Abbiamo applicato la funzione Cancella (). Qui abbiamo usato il metodo Begin (). A causa di questa funzione, inizia i valori chiave dell'assegnazione2. Quindi dobbiamo utilizzare il metodo find () per acquisire l'elemento nella mappa. Usiamo la funzione Begin () e End (), che è associata all'iteratore. Quindi costruiamo il puntatore del primo e secondo elemento dell'iteratore e utilizziamo l'istruzione "cout" per stampare questi valori.

Ora vogliamo eliminare l'elemento che ha il valore chiave 4. In questo modo, dobbiamo inizializzare la variabile "N". Il tipo di dati di questa variabile è un numero intero. Quindi useremo la funzione Cancome (). Questa funzione contiene il parametro del valore che vogliamo essere rimossi. L'istruzione "Cout" verrà utilizzata per eliminare quell'elemento. Ancora una volta, abbiamo usato il ciclo "per" e il puntatore dell'iteratore. Stamperemo il limite inferiore e il limite superiore della mappa per l'assegnazione1 utilizzando l'istruzione "cout".

Nella riga successiva, utilizzeremo l'istruzione "Cout" per creare un puntatore che indica il secondo valore di Assegnazione1. Inseriamo anche la parola chiave "endl" per andare alla riga successiva per la codifica. Ora verrà chiamato il metodo di assegnazione Upper_bound (). Il puntatore verrà creato per indicare il secondo valore del limite superiore dell'assegnazione1.

Esempio n. 2

In questa illustrazione, il valore della chiave e il valore collegato alla chiave hanno entrambi tipi di dati diversi. Non è possibile configurare i valori uno alla volta; devono essere forniti in coppia.

#includere
#includere
#includere
#includere
Utilizzo dello spazio dei nomi std;
int main ()

carta geografica Lavoratori;
Lavoratori [221] = "Anikaa";
Lavoratori [320] = "Zeeshan";
Lavoratori [345] = "Daniyal";
Lavoratori [237] = "Dania";
Lavoratori [189] = "Azka";
cout << "Workers[190]=" << Workers[237] << endl << endl;
cout << "Size of the map: " << Workers.size() << endl;
cout << endl << "The Original Order:" << endl;
per (mappa :: iterator jj = lavoratori.inizio(); JJ!= Lavoratori.FINE(); ++ JJ)

cout << (*jj).first << ": " << (*jj).second << endl;

cout << endl << "The Inverse Order:" << endl;
per (mappa :: reverse_iterator jj = lavoratori.rbegin (); JJ!= Lavoratori.rend (); ++ JJ)

cout << (*jj).first << ": " << (*jj).second << endl;

All'inizio del programma includeremo quattro importanti biblioteche, che includono, e . Dopotutto, lo spazio dei nomi standard verrà utilizzato come MST. Costruiamo la mappa dei lavoratori. Forniremo due tipi di dati come argomenti della mappa. Il tipo di dati include interi e stringa. Ora assegneremo rispettivamente gli ID ai lavoratori. Utilizziamo il formato dell'indice dell'array per allocare i valori. L'istruzione "Cout" viene utilizzata per mostrare il nome del lavoratore il cui documento è 190.

Inoltre, abbiamo utilizzato l'istruzione "Cout" per visualizzare la dimensione della mappa. La dimensione verrà stampata dopo l'istruzione "dimensione della mappa". Successivamente, l'istruzione "Cout" verrà utilizzata per visualizzare l'ordine originale degli ID. All'interno per loop, useremo il comando "mappa". Inizializziamo la stringa e l'iteratore. Quindi iniziamo la mappa dei lavoratori utilizzando il metodo Begin (). Per interrompere la mappa dei lavoratori, abbiamo utilizzato la funzione end ().

Nell'ultima parte del ciclo "per", abbiamo aumentato il valore dell'iteratore. L'istruzione "Cout" verrà utilizzata per mostrare gli elementi della mappa. Quindi useremo nuovamente l'istruzione "Cout" per mostrare la riga "l'ordine inverso". Utilizzeremo il metodo Begin () e End () per avviare e terminare gli elementi della mappa. Itereremo gli elementi fino a quando la condizione non sarà soddisfatta. Alla fine, l'istruzione "Cout" viene utilizzata per stampare gli elementi in modo inverso.

Esempio n. 3

Alcune delle funzioni della mappa vengono utilizzate nel programma successivo. Prima di ripetere un tale valore che corrisponde a una chiave specifica, inizialmente aggiunge altri elementi alla mappa.

#includere
#includere
#includere
#includere
Utilizzo dello spazio dei nomi std;
int main ()

carta geografica Std;
Std.Insert (std :: coppia(736, "Jamil"));
Std.Insert (std :: coppia(233, "dua"));
Std.Insert (std :: coppia(837, "aimita"));
Std [348] = "snobar";
Std [646] = "Tania";
cout << "Map Size: " << Std.size() << endl << endl;
cout << endl << "Real order of the values:" << endl;
per (mappa :: iterator iter = std.inizio(); iter!= Std.FINE(); ++ iter)

cout << (*iter).first << ": " << (*iter).second << endl;

std :: mappa:: iterator it = std.Trova (348);
Se (esso != Std.FINE())
std :: cout < " << Std.find(348)->secondo << '\n';

Prima di tutto, incorporeremo i file di intestazione. Il file di intestazione tratta le stringhe nel codice. Il file di intestazione tratta le funzionalità di input e output. Il file di intestazione tratta la mappa. E l'ultimo file di intestazione tratta le funzionalità dell'utilità. Iniziamo la codifica nel corpo della funzione principale () 0f. Eseguimo il comando "mappa". Con l'aiuto di ciò, inizializzamo una mappa dalle chiavi e dai loro valori appropriati. Il tipo di dati delle chiavi è un numero intero e il tipo di dati dei loro valori è "stringa".

Ora inseriremo i segni e i nomi degli studenti nella mappa con l'aiuto della funzione insert (). Usiamo questa funzione per aggiungere i dati dei tre studenti. Successivamente, useremo il formato dell'indice dell'array per inserire i marchi e i nomi degli studenti. I dati di due studenti verranno inseriti utilizzando il formato dell'indice dell'array.

Inoltre, applicheremo il metodo "cout". L'istruzione "Cout" visualizza la riga "dimensione della mappa" sullo schermo prima della mappa. All'interno di questa dichiarazione "cout", useremo il metodo size (). Ora mostreremo i nomi e i numeri degli studenti nel formato originale. L'istruzione "Cout" viene utilizzata per stampare il testo "Ordine reale dei valori". Utilizziamo il comando "endl" su entrambi i lati di questo testo per stampare questo testo su una riga separata. Ora abbiamo usato il ciclo "per". Utilizzeremo anche la funzione Begin () per iniziare a stampare il nome e i segni dello studente su una mappa.

Allo stesso modo, il metodo End () viene utilizzato per mostrare il cognome dello studente su una mappa. L'istruzione "Cout" mostrerà questi primi e ultimi valori. Alla fine del programma, useremo un'altra funzione mappa per trovare (). Vogliamo scoprire il nome dello studente, il cui numero è 348. Quindi chiameremo il metodo find (). Usiamo std :: mappa e std :: iterator. Allora abbiamo usato la condizione "if". Applichiamo la funzione mappa end () per soddisfare la condizione "if". Per stampare il nome dello studente i cui voti sono 348, impiegheremo il metodo std :: cout. Creiamo anche il puntatore, che indica il secondo valore della mappa.

Conclusione

Abbiamo discusso di una mappa C ++ e come utilizzare le funzioni della mappa in questo articolo. Abbiamo dimostrato brevemente l'aggiunta di oggetti e il recupero mediante l'uso della mappa in diversi esempi. Le mappe sono il componente della libreria modello standard. Le mappe sono recipienti associativi che contengono coppie di valore chiave ordinate; Quasi ogni chiave è distinta e può essere aggiunta o rimossa completamente. I valori chiave possono avere i loro valori correlati che verranno modificati. In una mappa, i valori definiti contengono i dati relativi alla chiave, mentre i valori chiave sono in genere utilizzati per organizzare e identificare particolari componenti.