std::ranges::view_interface<D>:: back
From cppreference.net
<
cpp
|
ranges
|
view interface
C++
Ranges library
|
||||||||||||||||||||||
| Range primitives | |||||||
|
|||||||
| Range concepts | |||||||||||||||||||
|
|||||||||||||||||||
| Range factories | |||||||||
|
|||||||||
| Range adaptors | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
|
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
||||||||||||
| Helper items | |||||||||||||||||
|
|
||||||||||||||||
std::ranges::view_interface
| Member functions | ||||
|
(C++23)
|
||||
|
(C++23)
|
||||
|
back
|
||||
|
constexpr
decltype
(
auto
)
back
(
)
requires ranges:: bidirectional_range < D > && ranges:: common_range < D > ; |
(1) | (C++20 起) |
|
constexpr
decltype
(
auto
)
back
(
)
const
requires ranges:: bidirectional_range < const D > && ranges:: common_range < const D > ; |
(2) | (C++20 起) |
back()
成员函数的默认实现返回派生类型视图中的最后一个元素。该元素是通过值返回还是通过引用返回,取决于迭代器类型的
operator
*
。
1)
令
derived
为
static_cast
<
D
&
>
(
*
this
)
。等价于
return
*
ranges::
prev
(
ranges::
end
(
derived
)
)
;
。若
empty()
为
true
(即起始迭代器与哨位比较相等),则行为未定义,即使以相同方式获取的迭代器可解引用。
2)
与
(1)
相同,区别在于
derived
是
static_cast
<
const
D
&
>
(
*
this
)
。
目录 |
返回值
视图中的最后一个元素。
注释
在 C++20 中,标准库中所有派生自
std::ranges::view_interface
的类型均未提供自身的
back()
成员函数。
然而,以下派生类型无法使用默认实现,因为它们既不满足
bidirectional_range
也不满足
common_range
的要求:
- std::ranges::basic_istream_view
- std::ranges::lazy_split_view
- std::ranges::split_view
- std::ranges::take_while_view
继承的
back()
成员函数可用于
std::ranges::empty_view
,但调用该函数始终会导致未定义行为。
示例
|
本节内容不完整
原因:缺少示例 |
参阅
|
(C++14)
|
返回指向容器或数组起始位置的反向迭代器
(函数模板) |
|
(C++20)
|
返回指向范围的反向迭代器
(定制点对象) |
|
(C++20)
|
返回指向只读范围的反向迭代器
(定制点对象) |