C++ 参考手册
- C++11
- C++14
- C++17
- C++20
- C++ 编译器支持情况表
- 独立与宿主实现
- C++ 语言
- C++ 关键词
- 预处理器
- C++ 标准库头文件
- 具名要求
- 功能特性测试 (C++20)
- 工具库
- 类型支持(基本类型、RTTI、类型特性)
- 概念库 (C++20)
- 错误处理
- 动态内存管理
- 日期和时间工具
- 字符串库
- 容器库
- std::array
- std::vector
- std::map
- std::map<Key,T,Compare,Allocator>::emplace
- std::map<Key,T,Compare,Allocator>::get_allocator
- std::map<Key,T,Compare,Allocator>::at
- std::map<Key,T,Compare,Allocator>::operator[]
- std::map<Key,T,Compare,Allocator>::begin, std::map<Key,T,Compare,Allocator>::cbegin
- std::map<Key,T,Compare,Allocator>::end, std::map<Key,T,Compare,Allocator>::cend
- std::map<Key,T,Compare,Allocator>::extract
- std::map<Key,T,Compare,Allocator>::merge
- std::map<Key,T,Compare,Allocator>::try_emplace
- std::map<Key,T,Compare,Allocator>::insert_or_assign
- std::map<Key,T,Compare,Allocator>::clear
- std::map<Key,T,Compare,Allocator>::map
- std::map<Key,T,Compare,Allocator>::~map
- std::map<Key,T,Compare,Allocator>::operator=
- std::map<Key,T,Compare,Allocator>::rbegin, std::map<Key,T,Compare,Allocator>::crbegin
- std::map<Key,T,Compare,Allocator>::rend, std::map<Key,T,Compare,Allocator>::crend
- std::map<Key,T,Compare,Allocator>::empty
- std::map<Key,T,Compare,Allocator>::size
- std::map<Key,T,Compare,Allocator>::max_size
- std::map<Key,T,Compare,Allocator>::insert
- std::map<Key,T,Compare,Allocator>::emplace_hint
- std::map<Key,T,Compare,Allocator>::erase
- std::map<Key,T,Compare,Allocator>::swap
- std::map<Key,T,Compare,Allocator>::count
- std::map<Key,T,Compare,Allocator>::find
- std::map<Key,T,Compare,Allocator>::contains
- std::map<Key,T,Compare,Allocator>::equal_range
- std::map<Key,T,Compare,Allocator>::lower_bound
- std::map<Key,T,Compare,Allocator>::upper_bound
- std::map<Key,T,Compare,Allocator>::key_comp
- std::map<Key,T,Compare,Allocator>::value_comp
- std::swap(std::map)
- std::erase_if (std::map)
- operator==,!=,<,<=,>,>=,<=>(std::map)
- std::map 的推导指引
- std::map<Key,T,Compare,Allocator>::value_compare
- std::unordered_map
- std::priority_queue
- std::span
- std::forward_list
- std::deque
- std::list
- std::set
- std::multiset
- std::multimap
- std::unordered_set
- std::unordered_multiset
- std::unordered_multimap
- std::stack
- std::queue
- std::vector<bool>
- 结点把柄 (C++17)
- 注释
- 迭代器库
- 范围库 (C++20)
- 算法库
- 数值库
- 输入/输出库
- 文件系统库
- 本地化库
- 正则表达式库
- 原子操作库
- 线程支持库
- 实验性 C++ 特性
- 有用的资源
- 索引
- std 符号索引
- 协程支持 (C++20)
- C++ 关键词
位置:首页 > C++ 参考手册 >容器库 >std::map > std::map<Key,T,Compare,Allocator>::begin, std::map<Key,T,Compare,Allocator>::cbegin
std::map<Key,T,Compare,Allocator>::begin, std::map<Key,T,Compare,Allocator>::cbegin
iterator begin(); |
(C++11 前) | |
iterator begin() noexcept; |
(C++11 起) | |
const_iterator begin() const; |
(C++11 前) | |
const_iterator begin() const noexcept; |
(C++11 起) | |
const_iterator cbegin() const noexcept; |
(C++11 起) | |
返回指向 map
首元素的迭代器。
若 map
为空,则返回的迭代器将等于 end() 。
参数
(无)
返回值
指向首元素的迭代器。
复杂度
常数。
示例
运行此代码
输出:
1, 1.09 4, 4.13 9, 9.24
使用自定义比较函数的示例
运行此代码
#include <cmath> #include <iostream> #include <map> struct Point { double x, y; }; typedef Point * PointPtr; // 比较二个 Point 指针的 x 坐标和 y 坐标 struct PointCmp { bool operator()(const PointPtr &lhs, const PointPtr &rhs) const { return lhs->x < rhs->x; } }; int main() { // 注意即使 x 坐标不按顺序, map 仍将按 x 坐标升序迭代 Point points[3] = { {2, 0}, {1, 0}, {3, 0} }; // mag 是将结点地址发送到其在 x-y 平面上的模的映射 // 尽管关键是指针到 Point ,我们希望按 x 坐标顺序而非按 Point 地址的顺序。 // 这通过使用 PointCmp 类的比较方法进行。 std::map<Point *, double, PointCmp> mag({ { points, 2 }, { points + 1, 1 }, { points + 2, 3 } }); // 从 0 更改每个 y 坐标为模 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 << "The magnitude of (" << cur->x << ", " << cur->y << ") is "; 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 << "The magnitude of (" << cur->x << ", " << cur->y << ") is "; std::cout << mag[cur] << '\n'; // 注意与 std::cout << iter->second << '\n'; 相反,上述的 // std::cout << i.second << '\n'; 不会打印更新的模 } }
输出:
The magnitude of (1, 2) is 2.23607 The magnitude of (2, 1) is 2.23607 The magnitude of (3, 3) is 4.24264 The magnitude of (1, 2.23607) is 2.44949 The magnitude of (2, 2.23607) is 3 The magnitude of (3, 4.24264) is 5.19615
参阅
返回指向容器尾端的迭代器 (公开成员函数) |