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

一个基类,可从中派生以实现自己的自定义视图或范围,该基类是关联集合中连续元素序列的跨度。 有关详细信息和代码示例,请参阅 使用 C++/WinRT 的集合

语法

template <typename D, typename K, typename V, typename Version = winrt::impl::no_collection_version>
struct map_view_base : iterable_base<D, winrt::Windows::Foundation::Collections::IKeyValuePair<K, V>, Version>

模板参数

typename D 派生的类型名称。

typename K集合中map_view_base视图或跨越的键的类型。

typename V集合中map_view_base视图或跨度的值的类型。

typename Version 向集合提供版本控制策略和服务的类型。

要求

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

命名空间: winrt

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

成员函数

函数 说明
map_view_base::First 函数 检索表示由map_view_base对象查看的第一个元素的 IIterator
map_view_base::HasKey 函数 确定指定的键是否属于 由map_view_base 对象查看的元素。
map_view_base::Lookup 函数 查找由指定键标识的元素,并检索相应的值。
map_view_base::Size 函数 检索 由map_view_base 对象查看的元素数。
map_view_base::Split 函数 将地图视图拆分为两个视图。

迭代器

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

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

...
#include <iostream>
using namespace winrt;
using namespace Windows::Foundation::Collections;
...
struct MyMapView :
    implements<MyMapView, IMapView<winrt::hstring, int>, IIterable<IKeyValuePair<winrt::hstring, int>>>,
    winrt::map_view_base<MyMapView, winrt::hstring, int>
{
    auto& get_container() const noexcept
    {
        return m_values;
    }

private:
    std::map<winrt::hstring, int> m_values{
        { L"AliceBlue", 0xfff0f8ff }, { L"AntiqueWhite", 0xfffaebd7 }
    };
};
...
IMapView<winrt::hstring, int> view{ winrt::make<MyMapView>() };

for (auto const& el : view)
{
    std::wcout << el.Key().c_str() << L", " << std::hex << el.Value() << std::endl;
}

IIterator<IKeyValuePair<winrt::hstring, int>> it{ view.First() };
while (it.HasCurrent())
{
    std::wcout << it.Current().Key().c_str() << L", " << std::hex << it.Current().Value() << std::endl;
    it.MoveNext();
}

map_view_base::First 函数

检索表示由map_view_base对象查看的第一个元素的 IIterator

语法

auto First();

返回值

表示由map_view_base对象查看的第一个元素的 IIterator

map_view_base::HasKey 函数

确定指定的键是否属于 由map_view_base 对象查看的元素。

语法

bool HasKey(K const& key) const noexcept;

parameters

key 要查找的密钥。

返回值

true 如果找到包含键的元素,则为 ;否则为 false

map_view_base::Lookup 函数

查找由指定键标识的元素,并检索相应的值。

语法

V Lookup(K const& key) const;

parameters

key 要查找的键。

返回值

如果找到与要查找的键对应的值,则引发 winrt::hresult_out_of_bounds 异常。

map_view_base::Size 函数

检索 由map_view_base 对象查看的元素数。

语法

uint32_t Size() const noexcept;

返回值

一个值,表示 由map_view_base 对象查看的元素数。

map_view_base::Split 函数

将地图视图拆分为两个视图。

语法

void Split(Windows::Foundation::Collections::IMapView<K, V>& first, Windows::Foundation::Collections::IMapView<K, V>& second) const noexcept;

parameters

first 原始地图的一半。

second 原始地图的下半部分。

请参阅