std::unordered_map::begin, std::unordered_map::cbegin
Материал из cppreference.com
< cpp | container | unordered map
iterator begin()noexcept; | (начиная с C++11) | |
const_iterator begin()constnoexcept; | (начиная с C++11) | |
const_iterator cbegin()constnoexcept; | (начиная с 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 функция-элемент) |