single_view 类(C++ 标准库)

只有一个元素的视图。 此视图适用于测试调用需要与包含至少一个元素的视图一起提供的代码。

语法

template<std::copy_constructible T>
  requires std::is_object_v<T>
class single_view : public ranges::view_interface<single_view<T>>

模板参数

T
元素的类型。

视图特征

有关下列条目的说明,请参阅视图类特征

特征 说明
范围适配器 views::single
基础范围
元素类型 创建 single_view 时指定
视图枚举器类别 contiguous_range
已设置大小 始终返回 1
const 可迭代
常见范围
借入范围

成员

成员函数 描述
构造函数C++20 构造 single_view
beginC++20 获取元素的迭代器。
dataC++20 获取指向元素的指针。
endC++20 获取视图末尾的 sentinel。
sizeC++20 获取元素数。 始终返回 1
view_interface 继承 描述
backC++20 获取元素。
emptyC++20 测试视图是否为空(始终返回 false)。
frontC++20 获取元素。
operator[]C++20 获取位于指定位置的元素(只有位置 0 有效)。
operator boolC++20 测试视图是否不为空(始终返回 false)。

注解

创建 single_view 的最佳方法是使用 views::single 范围适配器。 范围适配器是创建视图类的预期方法。 如果要创建自己的自定义视图类型,会公开视图类型。

除非模板值为 const,否则可以修改 single_view 中的值。 例如:single_view<const float> sv{3.14} // this value can't be modified because it's const

要求

标头: <ranges> (自C++20以来)

命名空间std::ranges

编译器选项:/std:c++20或更高版本是必需的。

构造函数

创建 single_view的实例。

1) single_view() = default;
2) constexpr explicit single_view(const T& t);
3) constexpr explicit single_view(T&& t);
4) template<class... Args>
        requires constructible_from<T, Args...>
    constexpr single_view(in_place_t, Args&&... args);

参数

t
元素值。

有关模板参数类型的信息,请参阅模板参数

注解

创建 single_view 的最佳方法是使用 views::single 范围适配器。

1) 使用默认构造的指定类型的单个元素创建 single_view。 例如, single_view<float> sv{} 使用默认构造为 0.0float 类型单个元素创建 single_view
2) 使用从指定参数进行复制初始化的指定类型的单个元素创建 single_view。 例如, single_view<myObjectType> sv{myObject} 使用从参数进行复制初始化的 myObjectType 类型单个元素创建 single_view
3) 使用从参数进行移动初始化的指定类型的单个元素创建 single_view
4) 使用通过 (std::forward<Args>(args)...)进行初始化的指定类型的单个元素创建 single_view

示例 single_view

/// requires /std:c++20 or higher
#include <ranges>
#include <iostream>
#include <string>
#include <tuple>

int main()
{
    std::ranges::single_view<int> sv{7};
    std::cout << sv.front() << " " << *sv.data() << "\n"; // 7 7

    std::ranges::single_view<std::tuple<int, std::string>> sv2{{6502, "8-bit"}};
    std::cout << std::get<0>(sv2[0]) << " " << std::get<1>(sv2[0]) << "\n"; // 6502 8-bit
}
7 7
6502 8-bit

begin

获取指向视图中单个元素的指针。

constexpr T* begin() noexcept;
constexpr const T* begin() const noexcept;

参数

无。

返回值

指向 single_view 内单个元素的指针。

data

获取指向 single_view 中单个元素的指针。

constexpr T* data() noexcept;
constexpr const T* data() const noexcept;

参数

无。

返回值

指向 single_view 中元素的指针。

end

获取指向元素后面的 sentinel 的指针。

constexpr T* end() noexcept;
constexpr const T* end() const noexcept;

参数

无。

返回值

指向紧跟元素的 sentinel 的指针。

size

获取视图中的元素数。 始终返回 1

static constexpr size_t size() noexcept;

参数

无。

返回值

1

另请参阅

<ranges>
single 范围适配器
empty_view
视图类