std::unordered_map::begin, std::unordered_map::cbegin
Материал из cppreference.com
< cpp | container | unordered map
iterator begin() noexcept; | (начиная с C++11) | |
const_iterator begin() const noexcept; | (начиная с C++11) | |
const_iterator cbegin() const noexcept; | (начиная с C++11) | |
Возвращает итератор на первый элемент unordered_map
.
Если unordered_map
- пуст, возвращаемый итератор будет равен end()
Содержание |
[править] Параметры
(нет)
[править] Возвращаемое значение
Итератор на первый элемент.
[править] Сложность
Константная.
[править] 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 функция-элемент) |