std::reverse_iterator<Iter>::operator++,+,+=,--,-,-=
来自cppreference.com
| (1) | (C++17 起为 constexpr) |
|
| (2) | (C++17 起为 constexpr) |
|
| (3) | (C++17 起为 constexpr) |
|
| (4) | (C++17 起为 constexpr) |
|
| (5) | (C++17 起为 constexpr) |
|
| (6) | (C++17 起为 constexpr) |
|
| (7) | (C++17 起为 constexpr) |
|
| (8) | (C++17 起为 constexpr) |
|
反向递增或递减底层迭代器。
1,3) 递减底层迭代器。
2,4) 递增底层迭代器。
5) 返回一个
reverse_iterator,其底层迭代器前进 -n 个位置。6) 返回一个
reverse_iterator,其底层迭代器前进 n 个位置。7) 将底层迭代器前进
-n 个位置。8) 将底层迭代器前进
n 个位置。参数
| n | - | 相对于当前位置的位置 |
返回值
1,2)
*this3,4) 在更改之前制作的
*this 的副本。5)
reverse_iterator(base() - n);6)
reverse_iterator(base() + n);7,8)
*this示例
运行此代码
#include <iostream>
#include <iterator>
#include <list>
#include <vector>
int main()
{
std::vector v{0, 1, 2, 3, 4};
auto rv = std::reverse_iterator{v.rbegin()};
std::cout << *(++rv) << ' '; // 3
std::cout << *(--rv) << ' '; // 4
std::cout << *(rv + 3) << ' '; // 1
rv += 3;
std::cout << rv[0] << ' '; // 1
rv -= 3;
std::cout << rv[0] << '\n'; // 4
std::list l{5, 6, 7, 8};
auto rl = std::reverse_iterator{l.rbegin()};
std::cout << *(++rl) << ' '; // OK:3
std::cout << *(--rl) << '\n'; // OK:4
// 以下语句会产生编译错误,因为底层迭代器未实现随机访问迭代器:
// *(rl + 3) = 13;
// rl += 3;
// rl -= 3;
}
输出:
3 4 1 1 4
7 8
参阅
| 令迭代器前进 (函数模板) | |
| 计算两个迭代器适配器间的距离 (函数模板) |