Пространства имён
Варианты
Действия

std::unordered_map::begin, std::unordered_map::cbegin

Материал из cppreference.com
 
 
 
 
iterator begin() noexcept;
(начиная с C++11)
const_iterator begin() const noexcept;
(начиная с C++11)
const_iterator cbegin() const noexcept;
(начиная с C++11)

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

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

range-begin-end.svg

Содержание

[править] Параметры

(нет)

[править] Возвращаемое значение

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

[править] Сложность

Константная.


[править] 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 - map, сопоставляющий адрес Node к длине вектора на плоскости
    std::unordered_map<Node *, double> mag = {
        { nodes,     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(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

[править] See also

(C++11)
возвращает итератор на конец
(public функция-элемент) [править]