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:Windows SDK 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 物件中的專案數目。

迭代器

observable_map_base是一個範圍,而該範圍是由內部免費函式所定義, (每個函式都會擷取與標準語言功能相容的反覆運算器) 。 因此,您可以使用範圍型 for 語句列舉observable_map_base物件中的專案。

您也可以從observable_map_base::First函式擷取IIterator,並使用該函式逐一查看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 物件中的專案數目。

另請參閱