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 T
vector_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 对象中的元素数。