Шаблон структуры winrt::observable_map_base (C++/WinRT))
Базовый класс, из которого можно создать собственную настраиваемую ассоциативную коллекцию. Дополнительные сведения и примеры кода см. в разделе "Коллекции" с помощью C++/WinRT.
Синтаксис
template <typename D, typename K, typename V>
struct observable_map_base : map_base<D, K, V>
Параметры шаблона
typename D
Имя производного типа.
typename K
Тип ключей в коллекции.
typename V
Тип значений в коллекции.
Требования
Минимальный поддерживаемый пакет SDK: пакет SDK Windows версии 10.0.17763.0 (Windows 10, версия 1809)
Пространство имен: winrt
Заголовок: %WindowsSdkDir%IncludeWindowsTargetPlatformVersion<>\cppwinrt\winrt\base.h (включен по умолчанию)
Функции элементов
Функция | Описание |
---|---|
функция observable_map_base::Clear | Удаляет все элементы из объекта observable_map_base . |
функция observable_map_base::First | Извлекает IIterator , представляющий первый элемент в объекте observable_map_base . |
функция observable_map_base::GetView | Извлекает неизменяемое представление объекта observable_map_base . |
функция observable_map_base::HasKey | Определяет, принадлежит ли указанный ключ элементу объекта observable_map_base . |
функция observable_map_base::Insert | Вставляет или обновляет элемент в объекте observable_map_base . |
функция observable_map_base::Lookup | Ищет элемент, определенный указанным ключом, и извлекает соответствующее значение. |
функция observable_map_base::MapChanged | Регистрирует и отменяет делегат, обрабатывающий событие изменения карты объекта observable_map_base . |
функция observable_map_base::Remove | Удаляет элемент из объекта observable_map_base . |
Функция observable_map_base::Size | Извлекает количество элементов в объекте observable_map_base . |
Iterators
Observable_map_base — это диапазон, и этот диапазон определяется внутренними свободными функциями (каждый из которых получает итератор), совместимый со стандартными языковыми функциями. Из-за этого можно перечислить элементы в объекте observable_map_base с помощью инструкции на основе for
диапазона.
Вы также можете получить IIterator из функции observable_map_base::First и использовать ее для итерации элементов в объекте observable_map_base .
...
#include <iostream>
using namespace winrt;
using namespace Windows::Foundation::Collections;
...
struct MyObservableMap :
implements<MyObservableMap, IObservableMap<winrt::hstring, int>, IMap<winrt::hstring, int>, IMapView<winrt::hstring, int>, IIterable<IKeyValuePair<winrt::hstring, int>>>,
winrt::observable_map_base<MyObservableMap, winrt::hstring, int>
{
auto& get_container() const noexcept
{
return m_values;
}
auto& get_container() noexcept
{
return m_values;
}
private:
std::map<winrt::hstring, int> m_values{
{ L"AliceBlue", 0xfff0f8ff }, { L"AntiqueWhite", 0xfffaebd7 }
};
};
...
IObservableMap<winrt::hstring, int> map{ winrt::make<MyObservableMap>() };
for (auto const& el : map)
{
std::wcout << el.Key().c_str() << L", " << std::hex << el.Value() << std::endl;
}
IIterator<IKeyValuePair<winrt::hstring, int>> it{ map.First() };
while (it.HasCurrent())
{
std::wcout << it.Current().Key().c_str() << L", " << std::hex << it.Current().Value() << std::endl;
it.MoveNext();
}
функция observable_map_base::Clear
Удаляет все элементы из объекта observable_map_base .
Синтаксис
void Clear() noexcept;
функция observable_map_base::First
Извлекает IIterator , представляющий первый элемент в объекте observable_map_base .
Синтаксис
auto First();
Возвращаемое значение
IIterator, представляющий первый элемент в объекте observable_map_base.
функция observable_map_base::GetView
Извлекает неизменяемое представление объекта observable_map_base .
Синтаксис
winrt::Windows::Foundation::Collections::IMapView<K, V> GetView() const;
Возвращаемое значение
IMapView, содержащий неизменяемое представление observable_map_base.
функция observable_map_base::HasKey
Определяет, принадлежит ли указанный ключ элементу объекта observable_map_base .
Синтаксис
bool HasKey(K const& key) const noexcept;
Параметры
key
Ключ для поиска.
Возвращаемое значение
true
Значение , если элемент, содержащий ключ, найден, в противном случае false
.
функция observable_map_base::Insert
Вставляет или обновляет элемент в объекте observable_map_base .
Синтаксис
bool Insert(K const& key, V const& value);
Параметры
key
Ключ, связанный с элементом для вставки или обновления.
value
Значение для вставки или замены.
Возвращаемое значение
true
Значение , если элемент с указанным ключом найден и обновлен; в противном случае false
.
функция observable_map_base::Lookup
Ищет элемент, определенный указанным ключом, и извлекает соответствующее значение.
Синтаксис
V Lookup(K const& key) const;
Параметры
key
Ключ для поиска.
Возвращаемое значение
Значение, соответствующее поиску ключа при обнаружении, в противном случае возникает исключение winrt::hresult_out_of_bounds .
функция observable_vector_base::MapChanged
Регистрирует и (или) отменяет делегат, обрабатывающий событие изменения карты объекта observable_map_base .
Синтаксис
// Register
winrt::event_token MapChanged(winrt::Windows::Foundation::Collections::MapChangedEventHandler<K, V> const& handler);
// Revoke with event_token
void MapChanged(winrt::event_token const cookie);
// Revoke with event_revoker
MapChanged_revoker MapChanged(winrt::auto_revoke_t, winrt::Windows::Foundation::Collections::MapChangedEventHandler<K, V> const& handler) const
Возвращаемое значение
Либо void
winrt::event_token, с помощью которого можно отозвать зарегистрированный делегат, либо MapChanged_revoker (псевдоним типа для winrt::event_revoker< IObservableMapK<, V>>), с помощью которого можно отозвать зарегистрированный делегат.
Пример
winrt::event_revoker<IObservableMap<winrt::hstring, int>> m_event_revoker;
...
m_event_revoker = map.MapChanged(winrt::auto_revoke, [this](IObservableMap<winrt::hstring, int> const&, IMapChangedEventArgs<winrt::hstring> const&)
{
...
});
функция observable_map_base::Remove
Удаляет элемент из объекта observable_map_base .
Синтаксис
void Remove(K const& key);
Параметры
key
Ключ, связанный с удаляемого элемента.
Функция observable_map_base::Size
Извлекает количество элементов в объекте observable_map_base .
Синтаксис
uint32_t Size() const noexcept;
Возвращаемое значение
Значение, представляющее количество элементов в объекте observable_map_base .