Namespaces
Variants

std::unordered_map<Key,T,Hash,KeyEqual,Allocator>:: begin, std::unordered_map<Key,T,Hash,KeyEqual,Allocator>:: cbegin

From cppreference.net

iterator begin ( ) noexcept ;
(1) (начиная с C++11)
(constexpr начиная с C++26)
const_iterator begin ( ) const noexcept ;
(2) (начиная с C++11)
(constexpr начиная с C++26)
const_iterator cbegin ( ) const noexcept ;
(3) (начиная с C++11)
(constexpr начиная с C++26)

Возвращает итератор на первый элемент * this .

Если * this пуст, возвращаемый итератор будет равен end() .

range-begin-end.svg

Содержание

Возвращаемое значение

Итератор на первый элемент.

Сложность

Константа.

Пример

#include <cmath>
#include <iostream>
#include <unordered_map>
struct Node { double x, y; };
int main()
{
    Node nodes[3] = {{1, 0}, {2, 0}, {3, 0}};
    // mag - это отображение, связывающее адрес Node с его величиной на плоскости
    std::unordered_map<Node*, double> mag =
    {
        { nodes + 0, 1 },
        { nodes + 1, 2 },
        { nodes + 2, 3 }
    };
    // Изменить каждую y-координату с 0 на величину
    for (auto iter = mag.begin(); iter != mag.end(); ++iter)
    {
        auto cur = iter->first; // указатель на Node
        cur->y = mag[cur]; // можно было также использовать cur->y = iter->second;
    }
    // Обновить и вывести величину каждого узла
    for (auto iter = mag.begin(); iter != mag.end(); ++iter)
    {
        auto cur = iter->first;
        mag[cur] = std::hypot(cur->x, cur->y);
        std::cout << "Величина (" << cur->x << ", " << cur->y << ") равна ";
        std::cout << iter->second << '\n';
    }
    // Повторить вышеописанное с использованием цикла for на основе диапазона
    for (auto i : mag)
    {
        auto cur = i.first;
        cur->y = i.second;
        mag[cur] = std::hypot(cur->x, cur->y);
        std::cout << "Величина (" << cur->x << ", " << cur->y << ") равна ";
        std::cout << mag[cur] << '\n';
        // В отличие от std::cout << iter->second << '\n'; выше, 
        // std::cout << i.second << '\n'; НЕ выведет обновленную величину
    }
}

Возможный вывод:

Величина (3, 3) равна 4.24264
Величина (1, 1) равна 1.41421
Величина (2, 2) равна 2.82843
Величина (3, 4.24264) равна 5.19615
Величина (1, 1.41421) равна 1.73205
Величина (2, 2.82843) равна 3.4641

Смотрите также

возвращает итератор на конец
(публичная функция-член)
(C++11) (C++14)
возвращает итератор на начало контейнера или массива
(шаблон функции)