Шаблон структуры 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: пакет SDK Windows версии 10.0.17763.0 (Windows 10, версия 1809)
Пространство имен: winrt
Заголовок: %WindowsSdkDir%IncludeWindowsTargetPlatformVersion<>\cppwinrt\winrt\base.h (включен по умолчанию)
Функции элементов
Функция | Описание |
---|---|
функция map_view_base::First | Извлекает IIterator , представляющий первый элемент, просматриваемый объектом map_view_base . |
функция map_view_base::HasKey | Определяет, принадлежит ли указанный ключ элементу, просматриваемому объектом map_view_base . |
функция map_view_base::Lookup | Ищет элемент, определенный указанным ключом, и извлекает соответствующее значение. |
Функция map_view_base::Size | Извлекает количество элементов, просматриваемых объектом map_view_base . |
функция map_view_base::Split | Разбивает представление карты на два представления. |
Iterators
Map_view_base — это диапазон, и этот диапазон определяется внутренними свободными функциями (каждый из которых получает итератор), совместимый со стандартными языковыми функциями. Из-за этого можно перечислить элементы, просматриваемые объектом map_view_base с помощью инструкции на основе for
диапазона.
Можно также получить IIterator из функции map_view_base::First и использовать ее для итерации элементов, просматриваемых объектом 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
Извлекает IIterator , представляющий первый элемент, просматриваемый объектом map_view_base .
Синтаксис
auto First();
Возвращаемое значение
IIterator, представляющий первый элемент, просматриваемый объектом map_view_base.
функция map_view_base::HasKey
Определяет, принадлежит ли указанный ключ элементу, просматриваемому объектом map_view_base .
Синтаксис
bool HasKey(K const& key) const noexcept;
Параметры
key
Ключ для поиска.
Возвращаемое значение
true
Значение , если элемент, содержащий ключ, найден, в противном случае false
.
функция map_view_base::Lookup
Ищет элемент, определенный указанным ключом, и извлекает соответствующее значение.
Синтаксис
V Lookup(K const& key) const;
Параметры
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;
Параметры
first
Одна половина исходной карты.
second
Вторая половина исходной карты.