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

一个基类,可以从中派生来实现自己的自定义不可观测的常规用途集合。 有关详细信息和代码示例,请参阅 使用 C++/WinRT 的集合

语法

template <typename D, typename T>
struct vector_base : vector_view_base<D, T, winrt::impl::collection_version>

模板参数

typename D 派生的类型名称。

typename Tvector_base中的元素的类型。

要求

支持的最低 SDK:Windows SDK 版本 10.0.17763.0 (Windows 10 版本 1809)

命名空间: winrt

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

成员函数

函数 说明
vector_base::Append 函数 将元素追加到 vector_base 对象的末尾。
vector_base::Clear 函数 vector_base 对象中删除所有元素。
vector_base::First 函数 检索表示vector_base对象中第一个元素的 IIterator
vector_base::GetAt 函数 检索 vector_base 对象中指定索引处的元素。
vector_base::GetMany 函数 检索从给定索引开始 的vector_base 对象中的元素集合。
vector_base::GetView 函数 检索 vector_base 对象的不可变视图。
vector_base::IndexOf 函数 检索 vector_base 对象中指定元素的索引。
vector_base::InsertAt 函数 vector_base 对象中的指定索引处插入元素。
vector_base::RemoveAt 函数 删除 vector_base 对象中指定索引处的元素。
vector_base::RemoveAtEnd 函数 vector_base 对象中删除最后一个元素。
vector_base::ReplaceAll 函数 vector_base 对象中的所有元素替换为指定的元素。
vector_base::SetAt 函数 设置 vector_base 对象中指定索引处元素的值。
vector_base::Size 函数 检索 vector_base 对象中的元素数。

迭代器

vector_base是一个范围,该范围由内部免费函数定义, (每个函数检索与标准语言功能兼容的迭代器) 。 因此,可以使用基于for范围的语句枚举vector_base对象中的元素。

还可以从 vector_base::First 函数检索 IIterator,并使用该函数循环访问vector_base对象中的元素。

...
#include <iostream>
using namespace winrt;
using namespace Windows::Foundation::Collections;
...
struct MyVector :
    implements<MyVector, IVector<float>, IVectorView<float>, IIterable<float>>,
    winrt::vector_base<MyVector, float>
{
    auto& get_container() const noexcept
    {
        return m_values;
    }

    auto& get_container() noexcept
    {
        return m_values;
    }

private:
    std::vector<float> m_values{ 0.1f, 0.2f, 0.3f };
};
...
IVector<float> coll{ winrt::make<MyVector>() };

for (auto const& el : coll)
{
    std::wcout << el << std::endl;
}

IIterator<float> it{ coll.First() };
while (it.HasCurrent())
{
    std::wcout << it.Current() << std::endl;
    it.MoveNext();
}

vector_base::Append 函数

将元素追加到 vector_base 对象的末尾。

语法

void Append(T const& value);

parameters

value 要追加的元素。

vector_base::Clear 函数

vector_base 对象中删除所有元素。

语法

void Clear() noexcept;

vector_base::First 函数

检索表示vector_base对象中第一个元素的 IIterator

语法

auto First();

返回值

一个 IIterator ,表示 vector_base 对象中的第一个元素。

vector_base::GetAt 函数

检索 vector_base 对象中指定索引处的元素。

语法

T GetAt(uint32_t const index) const;

parameters

index 从零开始的元素索引。

返回值

vector_base 对象中指定索引处的元素。

vector_base::GetMany 函数

检索从给定索引开始 的vector_base 对象中的元素集合。

语法

uint32_t GetMany(uint32_t const startIndex, array_view<T> values) const;

parameters

startIndex 从零开始的元素索引。

values 要将项复制到 的array_view

返回值

一个值,表示检索的元素数。

vector_base::GetView 函数

检索 vector_base 对象的不可变视图。

语法

winrt::Windows::Foundation::Collections::IVectorView<T> GetView() const noexcept;

返回值

包含vector_base不可变视图的 IVectorView

vector_base::IndexOf 函数

检索 vector_base 对象中指定元素的索引。

语法

bool IndexOf(T const& value, uint32_t& index) const noexcept;

parameters

value 要查找 的vector_base 对象中的元素。

index 如果找到元素,则元素的从零开始的索引,否则 为vector_base 对象中的元素数。

返回值

true 如果找到元素,则为 ;否则为 false

vector_base::InsertAt 函数

vector_base 对象中的指定索引处插入元素。

语法

void InsertAt(uint32_t const index, T const& value);

parameters

index 要插入元素的从零开始的索引。

value 要插入的元素。

vector_base::RemoveAt 函数

删除 vector_base 对象中指定索引处的元素。

语法

void RemoveAt(uint32_t const index);

parameters

index 要移除的元素的从零开始的索引。

vector_base::RemoveAtEnd 函数

vector_base 对象中删除最后一个元素。

语法

void RemoveAtEnd();

vector_base::ReplaceAll 函数

vector_base 对象中的所有元素替换为指定的元素。

语法

void ReplaceAll(array_view<T const> value);

parameters

value 包含新元素 的array_view

vector_base::SetAt 函数

设置 vector_base 对象中指定索引处的元素的值。

语法

void SetAt(uint32_t const index, T const& value);

parameters

index 要设置其值的元素的从零开始的索引。

value 要设置的元素值。

vector_base::Size 函数

检索 vector_base 对象中的元素数。

语法

uint32_t Size() const noexcept;

返回值

一个值,表示 vector_base 对象中的元素数。

请参阅