winrt::array_view 结构模板 (C++/WinRT)

连续一系列值的视图或范围。 有关 winrt::array_view的更多示例和信息,请参阅 标准 C++ 数据类型和 C++/WinRT

语法

template <typename T>
struct array_view

模板参数

typename T array_view视图或跨度) 元素 ( 值的类型。

要求

支持的最低 SDK:Windows SDK 版本 10.0.17134.0 (Windows 10 版本 1803)

命名空间: winrt

标头: %WindowsSdkDir%Include<WindowsTargetPlatformVersion>\cppwinrt\winrt\base.h (默认包含)

成员类型别名

别名名称 类型
array_view::value_type 模板参数的 typename T 同义词。
array_view::size_type uint32_t的同义词。
array_view::reference array_view::value_type&的同义词。
array_view::const_reference array_view::value_type const&的同义词。
array_view::p ointer array_view::value_type*的同义词。
array_view::const_pointer array_view::value_type const*的同义词。
array_view::iterator array_view::value_type 实现定义的数组迭代器的同义词。
array_view::const_iterator array_view::value_type const 实现定义的数组迭代器的同义词。
array_view::reverse_iterator std::reverse_iterator<array_view::iterator> 的同义词。
array_view::const_reverse_iterator std::reverse_iterator<array_view::const_iterator> 的同义词。

构造函数

构造函数 说明
array_view::array_view 构造函数 array_view 结构的新实例初始化为 (视图,而不是) 输入数据的副本。

成员函数

函数 描述
array_view::at 函数 返回对 array_view 对象内指定位置的 元素的引用。
array_view::back 函数 返回对 array_view 对象中最后一个元素 引用。
array_view::begin 函数 返回指向 array_view 对象中的第一个元素的迭代器。
array_view::cbegin 函数 返回指向 array_view 对象中的第一个元素的常数迭代器。
array_view::cend 函数 返回一个常量迭代器,该迭代器指向 () array_view 对象中最后一个元素之外的一个迭代器。
array_view::crbegin 函数 返回一个常量反向迭代器,使其超出 (超出 array_view 对象) 中最后一个元素的末尾。
array_view::crend 函数 返回对 array_view 对象中的第一个元素的常数反向迭代器。
array_view::d ata 函数 返回指向 array_view 对象正在查看的基础数据的指针。
array_view::empty 函数 返回一个值,该值指示 array_view 对象是否为空 (是零个元素上的视图) 。
array_view::end 函数 返回一个迭代器,该迭代器超出) array_view 对象中 最后一个元素的末尾 (一个。
array_view::front 函数 返回对 array_view 对象中第一个元素 引用。
array_view::rbegin 函数 将反向迭代器返回到) array_view 对象中最后一个元素 (末尾之外的 个迭代器。
array_view::rend 函数 返回 array_view 对象中的 第一个元素的反向迭代器。
array_view::size 函数 返回 array_view 对象中的元素数。

成员运算符

运算符 说明
array_view::operator[] (下标运算符) 返回对 array_view 对象内指定位置的 元素的引用。

免费运算符

运算符 说明
operator!= (不相等运算符) 返回一个值,该值指示这两个参数是否不相等。
运算符< (小于运算符) 返回一个值,该值指示第一个参数是否小于第二个参数。
operator<= (小于或等于运算符) 返回一个值,该值指示第一个参数是否小于或等于第二个参数。
operator== (相等运算符) 返回一个值,该值指示这两个参数是否相等。
运算符> (大于运算符) 返回一个值,该值指示第一个参数是否大于第二个参数。
operator>= (大于或等于运算符) 返回一个值,该值指示第一个参数是否大于或等于第二个参数。

迭代器

array_view是一个区域,该范围由 array_view::beginarray_view:::end 成员函数定义,其中每个函数返回一个迭代器 (还会看到 array_view::cbeginarray_view::cend) 。 因此,可以使用基于for范围的语句或 std::for_each 模板函数枚举 array_view 对象中的字符。

#include <iostream>
using namespace winrt;
...
template <typename T>
void Iterators(array_view<T> const& theArrayView)
{
    for (T& element : theArrayView)
    {
        std::wcout << element << " ";
    }

    std::for_each(theArrayView.cbegin(), theArrayView.cend(), [](T const& element) { std::wcout << element << " "; });
}

array_view::array_view 构造函数

array_view 结构的新实例初始化为 (视图,而不是) 输入数据的副本。

语法

array_view() noexcept;
template <typename C, uint32_t N> array_view(C(&rawArrayValue)[N]) noexcept;
template <typename C, uint32_t N> array_view(std::array<C, N> const& arrayValue) noexcept;
template <typename C, uint32_t N> array_view(std::array<C, N>& arrayValue) noexcept;
array_view(std::initializer_list<T> initializerListValue) noexcept;
template <typename C> array_view(std::vector<C> const& vectorValue) noexcept;
template <typename C> array_view(std::vector<C>& vectorValue) noexcept;
array_view(T* first, T* last) noexcept;

模板参数

typename C 输入数据中) 元素 (值的类型。

uint32_t N 输入数据中) 元素 (值的数目。

参数

rawArrayValue 初始化 array_view 对象的原始数组值。

arrayValue初始化 array_view 对象的 std::array 值。

initializerListValue 初始化 array_view 对象的初始值设定项列表值。

vectorValue初始化array_view 对象的 std::vector 值。

firstlast 指向用于初始化 array_view 对象的值的指针。 如果 first 等于 last,则 array_view 对象为空。

示例

using namespace winrt;
...
void Constructors()
{
    // array_view() noexcept
    array_view<byte const> fromDefault{};

    byte theRawArray[]{ 99, 98, 97 };

    // template <typename C, uint32_t N> array_view(C(&value)[N]) noexcept
    array_view<byte const> fromRawArray{ theRawArray };

    const std::array<byte, 3> theConstArray{ 99, 98, 97 };

    // template <typename C, uint32_t N> array_view(std::array<C, N>& value) noexcept
    array_view<byte const> fromConstArray{ theConstArray };

    std::array<byte, 3> theArray{ 99, 98, 97 };

    // template <typename C, uint32_t N> array_view(std::array<C, N> const& value) noexcept
    array_view<byte const> fromArray{ theArray };

    // array_view(std::initializer_list<T> value) noexcept
    array_view<byte const> fromInitializerList{ 99, 98, 97 };

    const std::vector<byte> theConstVector{ 99, 98, 97 };

    // template <typename C> array_view(std::vector<C> const& value) noexcept
    array_view<byte const> fromConstVector{ theConstVector };

    std::vector<byte> theVector{ 99, 98, 97 };

    // template <typename C> array_view(std::vector<C>& value) noexcept
    array_view<byte const> fromVector{ theVector };

    // array_view(T* first, T* last) noexcept
    array_view<byte const> fromRange{ theArray.data(), theArray.data() + 2 }; // just the first two elements.
}

array_view::at 函数

返回对 array_view 对象内指定位置的 元素的引用。

语法

T& at(uint32_t const pos);
T const& at(uint32_t const pos) const;

参数

pos 从零开始的元素位置或索引。

返回值

array_view 对象中指定位置的 元素的引用。

array_view::back 函数

返回对 array_view 对象中最后一个元素 引用。

语法

T const& back() const noexcept;
T& back() noexcept;

返回值

对 array_view 对象中最后一个元素 引用。

array_view::begin 函数

返回指向 array_view 对象中的第一个元素的迭代器。 请参阅 迭代器

语法

stdext::checked_array_iterator<T const> begin() const noexcept;
stdext::checked_array_iterator<T> begin() noexcept;

返回值

指向 array_view 对象中第一个元素的迭代器。

array_view::cbegin 函数

返回指向 array_view 对象中的第一个元素的常数迭代器。 请参阅 迭代器

语法

stdext::checked_array_iterator<T const> cbegin() const noexcept;

返回值

指向 array_view 对象中第一个元素的常次迭代器。

array_view::cend 函数

返回一个常量迭代器,该迭代器指向 () array_view 对象中最后一个元素之外的一个迭代器。 请参阅 迭代器

语法

stdext::checked_array_iterator<T const> cend() const noexcept;

返回值

一个常量迭代器,指向一个超出 (末尾的迭代器) array_view 对象中的最后一个元素。

array_view::crbegin 函数

返回一个常量反向迭代器,使其超出 (超出 array_view 对象) 中最后一个元素的末尾。

语法

std::reverse_iterator<stdext::checked_array_iterator<T const>> crbegin() const noexcept;

返回值

一个常量反向迭代器,指向一个超出 (末尾) array_view 对象中最后一个元素的迭代器。

array_view::crend 函数

返回对 array_view 对象中的第一个元素的常数反向迭代器。

语法

std::reverse_iterator<stdext::checked_array_iterator<T const>> crend() const noexcept;

返回值

指向 array_view 对象中第一个元素的 const 反向迭代器。

array_view::d ata 函数

返回指向 array_view 对象正在查看的基础数据的指针。

语法

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

返回值

指向 array_view 对象正在查看的基础数据的指针。

array_view::empty 函数

返回一个值,该值指示 array_view 对象是否为空 (是零个元素上的视图) 。

语法

bool empty() const noexcept;

返回值

true 如果 array_view 对象为空 (是) 零个元素的视图,则为 ;否则为 false

array_view::end 函数

返回一个迭代器,该迭代器超出) array_view 对象中 最后一个元素的末尾 (一个。 请参阅 迭代器

语法

stdext::checked_array_iterator<T const> end() const noexcept;
stdext::checked_array_iterator<T> end() noexcept;

返回值

一个迭代器,指向超出 (超出array_view 对象) 中最后一个元素的 迭代 器。

array_view::front 函数

返回对 array_view 对象中第一个元素 引用。

语法

T const& front() const noexcept;
T& front() noexcept;

返回值

对 array_view 对象中的第一个元素 引用。

array_view::operator[] (下标运算符)

返回对 array_view 对象内指定位置的 元素的引用。

语法

T const& operator[](uint32_t const pos) const noexcept;
T& operator[](uint32_t const pos) noexcept;

参数

pos 从零开始的元素位置或索引。

返回值

array_view 对象中指定位置的 元素的引用。

array_view::rbegin 函数

将反向迭代器返回到) array_view 对象中最后一个元素 (末尾之外的 个迭代器。

语法

std::reverse_iterator<stdext::checked_array_iterator<T const>> rbegin() const noexcept;
std::reverse_iterator<stdext::checked_array_iterator<T>> rbegin() noexcept;

返回值

一个反向迭代器,指向一个超出 (一个超出) array_view对象中最后一个元素 的反向 迭代器。

array_view::rend 函数

返回 array_view 对象中的 第一个元素的反向迭代器。

语法

std::reverse_iterator<stdext::checked_array_iterator<T const>> rend() const noexcept;
std::reverse_iterator<stdext::checked_array_iterator<T>> rend() noexcept;

返回值

array_view 对象中 第一个元素的反向迭代器。

array_view::size 函数

返回 array_view 对象中的元素数。

语法

uint32_t size() const noexcept;

返回值

一个 uint32_t ,包含 array_view 对象中的元素数。

operator!= (不等运算符)

返回一个值,该值指示这两个参数是否不相等。

语法

template <typename T> bool operator!=(winrt::array_view<T> const& left, winrt::array_view<T> const& right) noexcept;

参数

leftright 要与其他参数进行比较 的array_view 值。

返回值

true 如果两个参数彼此不相等,则为 ;否则为 false

运算符< (小于运算符)

返回一个值,该值指示第一个参数是否小于第二个参数。

语法

template <typename T> bool operator<(winrt::array_view<T> const& left, winrt::array_view<T> const& right) noexcept;

参数

leftright 要与其他参数进行比较 的array_view 值。

返回值

true 如果第一个参数小于第二个参数,则为 ;否则为 false

operator<= (小于或等于运算符)

返回一个值,该值指示第一个参数是否小于或等于第二个参数。

语法

template <typename T> bool operator<=(winrt::array_view<T> const& left, winrt::array_view<T> const& right) noexcept;

参数

leftright 要与其他参数进行比较 的array_view 值。

返回值

true 如果第一个参数小于或等于第二个参数,则为 ;否则为 false

operator== (相等运算符)

返回一个值,该值指示两个参数是否相等。

语法

template <typename T> bool operator==(winrt::array_view<T> const& left, winrt::array_view<T> const& right) noexcept;

参数

leftright 要与其他参数进行比较 的array_view 值。

返回值

true 如果两个参数相等,则为 ;否则为 false

运算符> (大于运算符)

返回一个值,该值指示第一个参数是否大于第二个参数。

语法

template <typename T> bool operator>(winrt::array_view<T> const& left, winrt::array_view<T> const& right) noexcept;

参数

leftright 要与其他参数进行比较 的array_view 值。

返回值

true 如果第一个参数大于第二个参数,则为 ;否则为 false

operator>= (大于或等于运算符)

返回一个值,该值指示第一个参数是否大于或等于第二个参数。

语法

template <typename T> bool operator>=(winrt::array_view<T> const& left, winrt::array_view<T> const& right) noexcept;

参数

leftright 要与其他参数进行比较 的array_view 值。

返回值

true 如果第一个参数大于或等于第二个参数,则为 ;否则为 false

另请参阅