mapa_desordenado en() en C++ – Part 1

Requisito previo: mapas desordenados en STL
Unordered_map: unordered_map es un contenedor asociado que almacena elementos formados por la combinación de un valor clave y un valor asignado. El valor de la clave se utiliza para identificar de forma única el elemento y el valor asignado es el contenido asociado con la clave. Tanto la clave como el valor pueden ser de cualquier tipo predefinido o definido por el usuario.
unordered_map::at(): Esta función en C++ unordered_map devuelve la referencia al valor con el elemento como clave k. 
 

Sintaxis:  

unordered_map.at(k);
Parameter:
It is the key value of the element whose mapped value we want to access.
Return type :
A reference to the mapped value of the element with a key value equivalent

Nota: el método genera un error en tiempo de ejecución si la clave no está presente.

CPP

// C++ program to illustrate
// std :: unordered_map :: at()
#include<iostream>
#include<string>
#include<unordered_map>
 
using namespace std;
 
int main()
{
    unordered_map<string,int> mp = {
                            {"first",1},
                            {"second",2},
                            {"third",3},
                            {"fourth",4}
    };
                                     
    // returns the reference i.e. the mapped
    // value with the key 'second'
    cout<<"Value of key mp['second'] = "
        <<mp.at("second")<<endl;
     
    try
    {
        mp.at();
    }
 
    catch(const out_of_range &e)
    {
        cerr << "Exception at " << e.what() << endl;
    }
     
     
    return 0;
}

Producción:  

Value of key mp['second'] = 2
Exception at _Map_base::at

Aplicación práctica: std::unordered_map::la función at() se puede usar para acceder al valor asignado y, por lo tanto, se puede editar, actualizar, etc. 

CPP

// CPP program to illustrate
// application of this function
// Program to correct the marks
// given in different subjects
#include<iostream>
#include<string>
#include<unordered_map>
 
using namespace std;
 
// driver code
int main()
{
    // marks in different subjects
    unordered_map<string,int> my_marks = {
                    {"Maths", 90},
                    {"Physics", 87},
                    {"Chemistry", 98},
                    {"Computer Application", 94}
                    };
         
                                     
        my_marks.at("Physics") = 97;
        my_marks.at("Maths") += 10;
        my_marks.at("Computer Application") += 6;
         
        for (auto& i: my_marks)
        {
            cout<<i.first<<": "<<i.second<<endl;
        }
     
     
     
    return 0;
}

Producción:  

Computer Application: 100
Chemistry: 98
Physics: 97
Maths: 100

Cómo unordered_map at() es diferente de unordered_map operator() 

  • Tanto at() como operator[] se usan para referirse al elemento presente en la posición dada , la única diferencia es que at() lanza una excepción fuera de rango mientras que operator[] muestra un comportamiento indefinido, es decir, si operator[] se usa para encuentre el valor correspondiente a la clave y si la clave no está presente en el mapa desordenado, primero insertará la clave en el mapa y luego asignará el valor predeterminado ‘0’ correspondiente a esa clave. . 

Publicación traducida automáticamente

Artículo escrito por akash1295 y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *