std::ranges::view_interface<D>::empty
来自cppreference.com
< cpp | ranges | view interface
constexpr bool empty() requires ranges::forward_range<D>; |
(1) | (C++20 起) |
constexpr bool empty() const requires ranges::forward_range<const D>; |
(2) | (C++20 起) |
empty
成员函数的默认实现检查起始迭代器与哨位是否比较相等。
1) 令
derived
为绑定到 static_cast<D&>(*this) 的引用。等价于 return ranges::begin(derived) == ranges::end(derived); 。2) 同 (1) ,除了
derived
为 static_cast<const D&>(*this) 。参数
(无)
返回值
若派生类型对象的起始迭代器与哨位比较相等则为 true ,否则为 false 。
注解
下列派生类型可使用 empty
的默认实现:
- std::ranges::common_view
- std::ranges::drop_view
- std::ranges::drop_while_view
- std::ranges::elements_view
- std::ranges::filter_view
- std::ranges::iota_view
- std::ranges::join_view
- std::ranges::reverse_view
- std::ranges::single_view
- std::ranges::split_view
- std::ranges::take_view
- std::ranges::take_while_view
- std::ranges::transform_view
尽管 std::ranges::basic_istream_view 继承自 std::ranges::view_interface 并且不声明 empty
成员函数,它仍无法使用默认实现,因为它决不满足 std::ranges::forward_range 。
示例
运行此代码
#include <array> #include <ranges> int main() { constexpr std::array a {0, 1, 2, 3, 4}; static_assert( ! std::ranges::single_view(a).empty() ); static_assert( (a | std::views::take(0)).empty() ); static_assert( ! (a | std::views::take(2)).empty() ); static_assert( (a | std::views::drop(9)).empty() ); static_assert( ! (a | std::views::drop(2)).empty() ); static_assert( std::views::iota(0,0).empty() ); static_assert( ! std::views::iota(0).empty() ); }
参阅
(C++17) |
检查容器是否为空 (函数模板) |
(C++20) |
检查范围是否为空 (定制点对象) |