std::unordered_map<Key,T,Hash,KeyEqual,Allocator>::end, std::unordered_map<Key,T,Hash,KeyEqual,Allocator>::cend

Returns an iterator to the element following the last element of the unordered_map.

# Declarations

iterator end() noexcept;

(since C++11)

const_iterator end() const noexcept;

(since C++11)

const_iterator cend() const noexcept;

(since C++11)

# Return value

Iterator to the element following the last element.

# Example

#include <cmath>
#include <iostream>
#include <unordered_map>
 
struct Node { double x, y; };
 
int main()
{
    Node nodes[3] = {{1, 0}, {2, 0}, {3, 0}};
 
    // mag is a map mapping the address of a Node to its magnitude in the plane
    std::unordered_map<Node*, double> mag =
    {
        { nodes + 0, 1 },
        { nodes + 1, 2 },
        { nodes + 2, 3 }
    };
 
    // Change each y-coordinate from 0 to the magnitude
    for (auto iter = mag.begin(); iter != mag.end(); ++iter)
    {
        auto cur = iter->first; // pointer to Node
        cur->y = mag[cur]; // could also have used cur->y = iter->second;
    }
 
    // Update and print the magnitude of each node
    for (auto iter = mag.begin(); iter != mag.end(); ++iter)
    {
        auto cur = iter->first;
        mag[cur] = std::hypot(cur->x, cur->y);
        std::cout << "The magnitude of (" << cur->x << ", " << cur->y << ") is ";
        std::cout << iter->second << '\n';
    }
 
    // Repeat the above with the range-based for loop
    for (auto i : mag)
    {
        auto cur = i.first;
        cur->y = i.second;
        mag[cur] = std::hypot(cur->x, cur->y);
        std::cout << "The magnitude of (" << cur->x << ", " << cur->y << ") is ";
        std::cout << mag[cur] << '\n';
        // Note that in contrast to std::cout << iter->second << '\n'; above, 
        // std::cout << i.second << '\n'; will NOT print the updated magnitude
    }
}

# See also