winrt::map_base 結構範本 (C++/WinRT)
基類,您可以從中衍生來實作自己的自訂不可觀察關聯集合。 如需詳細資訊和程式碼範例,請參閱 使用 C++/WinRT 的集合。
語法
template <typename D, typename K, typename V>
struct map_base : map_view_base<D, K, V, winrt::impl::collection_version>
範本參數
typename D
您的衍生類型名稱。
typename K
集合中索引鍵的類型。
typename V
集合中值的型別。
規格需求
最低支援的 SDK:Windows SDK 10.0.17763.0 版 (Windows 10 版本 1809)
命名空間: winrt
標頭: %WindowsSdkDir%IncludeWindowsTargetPlatformVersion <> \cppwinrt\winrt\base. (h 預設包含)
成員函數
函式 | 描述 |
---|---|
map_base::Clear 函式 | 從 map_base 物件中移除所有元素。 |
map_base::First 函式 | 擷取 IIterator ,代表 map_base 物件中的第一個專案。 |
map_base::GetView 函式 | 擷取 map_base 物件的不可變檢視。 |
map_base::HasKey 函式 | 判斷指定的索引鍵是否屬於 map_base 物件中的專案。 |
map_base::Insert 函式 | 在 map_base 物件中插入或更新專案。 |
map_base::Lookup 函式 | 查閱指定索引鍵所識別的專案,並擷取對應的值。 |
map_base::Remove 函式 | 從 map_base 物件中移除專案。 |
map_base::Size 函式 | 擷取 map_base 物件中的專案數目。 |
迭代器
map_base是一個範圍,該範圍是由內部免費函式所定義, (每個函式都會擷取與標準語言功能相容的反覆運算器) 。 因此,您可以使用範圍型 for
語句列舉map_base物件中的專案。
您也可以從map_base::First函式擷取IIterator,並使用該函式逐一查看map_base物件中的元素。
...
#include <iostream>
using namespace winrt;
using namespace Windows::Foundation::Collections;
...
struct MyMap :
implements<MyMap, IMap<winrt::hstring, int>, IMapView<winrt::hstring, int>, IIterable<IKeyValuePair<winrt::hstring, int>>>,
winrt::map_base<MyMap, 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 }
};
};
...
IMap<winrt::hstring, int> map{ winrt::make<MyMap>() };
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();
}
map_base::Clear 函式
從 map_base 物件中移除所有元素。
語法
void Clear() noexcept;
map_base::First 函式
擷取 IIterator ,代表 map_base 物件中的第一個專案。
語法
auto First();
傳回值
IIterator,代表map_base物件中的第一個專案。
map_base::GetView 函式
擷取 map_base 物件的不可變檢視。
語法
winrt::Windows::Foundation::Collections::IMapView<K, V> GetView() const;
傳回值
IMapView,其中包含map_base的不可變檢視。
map_base::HasKey 函式
判斷指定的索引鍵是否屬於 map_base 物件中的專案。
語法
bool HasKey(K const& key) const noexcept;
參數
key
要尋找的索引鍵。
傳回值
true
如果找到包含索引鍵的專案,則為 ,否則 false
為 。
map_base::Insert 函式
在 map_base 物件中插入或更新專案。
語法
bool Insert(K const& key, V const& value);
參數
key
與要插入或更新之專案相關聯的索引鍵。
value
要插入或取代的值。
傳回值
true
如果找到並更新具有指定索引鍵的專案,則為 ;否則為 false
。
map_base::Lookup 函式
查閱指定索引鍵所識別的專案,並擷取對應的值。
語法
V Lookup(K const& key) const;
參數
key
要查閱的索引鍵。
傳回值
如果找到,則對應至所查閱之索引鍵的值,否則會擲回 winrt::hresult_out_of_bounds 例外狀況。
map_base::Remove 函式
從 map_base 物件中移除專案。
語法
void Remove(K const& key);
參數
key
與要移除之專案相關聯的索引鍵。
map_base::Size 函式
擷取 map_base 物件中的專案數目。
語法
uint32_t Size() const noexcept;
傳回值
值,表示 map_base 物件中的專案數目。