学习心得 - 语法 - 查漏补缺 - 迭代器
查漏补缺。
begin(),cbegin(),rbegin(),crbegin()
begin() 是指向第 \(1\) 个元素前一个的迭代器。
cbegin() 是 const 类型的,其他同上。
rbegin() 是指向最后 \(1\) 个元素的迭代器。
crbegin() 是 const 类型的,其他同上。
特别的,rbegin() 属于反向迭代器。
end(),cend(),rend(),crend()
end() 是指向最后 \(1\) 个元素后一个的迭代器。
cend() 是 const 类型的,其他同上。
rend() 是指向第 \(1\) 个元素的迭代器。
crend() 是 const 类型的,其他同上。
特别的,rend() 属于反向迭代器。
(正向)迭代器移动
++ 指向后一个,-- 指向前一个。
(反向)迭代器移动
++ 指向前一个,-- 指向后一个。
(正向)排序
对应的,vector 类型的数组可以通过迭代器排序。
正向排序语法:sort(vec.begin(),vec.end())。
(反向)排序
你可能会选择写函数,或者重载运算符,但是你可以选择:
反向排序语法:sort(vec.rbegin(),vec.rend())。
函数使用
我们发现平时格式都是 容器.begin()/容器.end(),那么为什么 begin 和 end 都是关键字呢?
因为 begin(容器),end(容器) 都可以返回相同的结果。
* 地址
对迭代器解引用(*)可以读取元素。
对迭代器结构体解引用(->)可以读取结构体里的元素。
* 多类型
| 输入迭代器 | 输出迭代器 | 前向迭代器 | 双向迭代器 | 随机访问迭代器 |
|---|---|---|---|---|
| 只读 | 只写 | 向前推进 | 前后推进 | 访问任意元素(跳跃) |
++,--,!= |
++ |
++,--,!= |
++,-- |
++,--,[x],-x,<,<=,>,>= |
文章同步载入于洛谷,详见文章下方链接。
本文来自博客园,作者:Ivan422,转载请注明原文链接:https://www.cnblogs.com/Exfish/p/23269829。

浙公网安备 33010602011771号