Open In App

map::at() and map::swap() in C++ STL

Maps are the container in STL which is used to store the elements in the form of key-value pair. Internally, the elements in a map are always sorted by its key. Maps are mainly implemented as binary search trees. map::at() at() function is used to return the reference to the element associated with the key k

Syntax:

map1.at(k)

Parameters:
k is the Key value of the 
element whose associated value is accessed.

Return: It returns a reference to the associated value of the element whose key value is equivalent to k. If the key value(k) does not match with any element of the map, it returns an std::out_of_range exception

Examples:

Input:  map1 = {
                 {1, 'a'},
                 {2, 'b'},
                 {3, 'c'},
                 {4, 'd'}
               }
        map1.at(2);
Output: b

Input:  map2 = {
                 {'w', 1},
                 {'x', 2},
                 {'y', 3}
               }
        map2.at('w');
Output: 1




// CPP program to illustrate
// Implementation of swap() function
#include <bits/stdc++.h>
using namespace std;
 
int main()
{
    // Take any two maps
    map<int, char> map1;
    map<char, int> map2;
 
    map1[1] = 'a';
    map1[2] = 'b';
    map1[3] = 'c';
    map1[4] = 'd';
 
    map2['w'] = 1;
    map2['y'] = 2;
    map2['z'] = 3;
 
    // Print the associated element
    cout << "Element at map1[2] = "
         << map1.at(2) << endl;
 
    cout << "Element at map2['w'] = "
         << map2.at('w') << endl;
 
    return 0;
}

Output:

Element at map1[2] = b
Element at map2['w'] = 1

map::swap() swap() function is used to exchange the contents of two maps but the maps must be of same type, although sizes may differ. 

Syntax:

map1.swap(map2)
       OR
swap(map1, map2)

Parameters:
map1 is the first map object.
map2 is the second map object.

Return value: None 

Examples:

Input : map1 = {
                 {1, 'a'},
                 {2, 'b'},
                 {3, 'c'},
                 {4, 'd'}
               }
        map2 = {
                 {5, 'w'},
                 {6, 'x'},
                 {7, 'y'}
               }
      swap(map1, map2)

Output : map1 = {
                 {5, 'w'},
                 {6, 'x'},
                 {7, 'y'}
                }
         map2 = {
                 {1, 'a'},
                 {2, 'b'},
                 {3, 'c'},
                 {4, 'd'}
                }




// CPP program to illustrate
// Implementation of swap() function
#include <bits/stdc++.h>
using namespace std;
 
int main()
{
    // Take any two maps
    map<int, char> map1, map2;
 
    map1[1] = 'a';
    map1[2] = 'b';
    map1[3] = 'c';
    map1[4] = 'd';
 
    map2[5] = 'w';
    map2[6] = 'x';
    map2[7] = 'y';
 
    // Swap elements of queues
    swap(map1, map2);
 
    // Print the elements of maps
    cout << "map1:\n"
         << "\tKEY\tELEMENT\n";
    for (auto it = map1.begin();
         it != map1.end(); it++)
 
        cout << "\t" << it->first << "\t" << it->second << '\n';
 
    cout << "map2:\n"
         << "\tKEY\tELEMENT\n";
    for (auto it = map2.begin();
         it != map2.end(); it++)
 
        cout << "\t" << it->first << "\t" << it->second << '\n';
 
    return 0;
}

Output:

map1:
    KEY    ELEMENT
    5    w
    6    x
    7    y
map2:
    KEY    ELEMENT
    1    a
    2    b
    3    c
    4    d

Let us see the differences in a tabular form -:

  map::at() map::swap()
1. It is used to return a reference to the mapped value of the element identified with key It is used to exchanges the content of the container
2. It take one parameter that this the Key value of the element whose mapped value is accessed. It takes one parameter that is the another map container of the same type
3. Its complexity is Logarithmic. Its complexity is constant.
4. Its iterator validity does not changes. Its return value is none.

Article Tags :
C++