std::counted_iterator<I>::base
来自cppreference.com
<tbody>
</tbody>
constexpr const I& base() const& noexcept; |
(1) | (C++20 起) |
constexpr I base() &&; |
(2) | (C++20 起) |
返回底层迭代器。
1) 返回到底层迭代器的引用。
2) 从底层迭代器移动构造返回值。
参数
(无)
返回值
1) 到底层迭代器的引用。
1) 从底层迭代器移动构造的迭代器。
异常
可能会抛出由实现定义的异常。
示例
运行此代码
#include <algorithm>
#include <iostream>
#include <iterator>
#include <type_traits>
#include <vector>
int main()
{
std::vector<int> v{0, 1, 2, 3, 4};
std::reverse_iterator<std::vector<int>::iterator> reverse{v.rbegin()};
std::counted_iterator counted{reverse, 3};
static_assert(std::is_same<
decltype(counted.base()),
std::reverse_iterator<std::vector<int>::iterator> const&
>{});
std::cout << "Print with reverse_iterator: ";
for (auto r = counted.base(); r != v.rend(); ++r)
std::cout << *r << ' ';
std::cout << '\n';
std::cout << "Print with counted_iterator: ";
for (; counted != std::default_sentinel; ++counted)
std::cout << counted[0] << ' ';
std::cout << '\n';
}
输出:
Print with reverse_iterator: 4 3 2 1 0
Print with counted_iterator: 4 3 2
缺陷报告
下列更改行为的缺陷报告追溯地应用于以前出版的 C++ 标准。
| 缺陷报告 | 应用于 | 出版时的行为 | 正确行为 |
|---|---|---|---|
| LWG 3391 | C++20 | base 的 const 版本返回底层迭代器的副本
|
返回引用 |
| LWG 3593 | C++20 | base 的 const 版本返回引用但可以不是 noexcept
|
使之为 noexcept |
参阅
| 访问被指向的元素 (公开成员函数) | |
| 返回到末尾的距离 (公开成员函数) |