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()
Параметры
(нет)
Возвращаемое значение
Итератор на первый элемент.
Сложность
Константная.
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 функция-элемент) |