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 Version 1809)
名前空間: winrt
ヘッダー: %WindowsSdkDir%IncludeWindowsTargetPlatformVersion<>\cppwinrt\winrt\base.h (既定で含まれています)
メンバー関数
機能 | 説明 |
---|---|
observable_map_base::Clear 関数 | observable_map_base オブジェクトからすべての要素を削除します。 |
observable_map_base::First 関数 | observable_map_base オブジェクトの最初の要素を表す IIterator を取得します。 |
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は範囲であり、その範囲は、標準言語機能と互換性のある内部フリー関数 (それぞれが反復子を取得) によって定義されます。 このため、範囲ベース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 関数
observable_map_base オブジェクトの最初の要素を表す IIterator を取得します。
構文
auto First();
戻り値
observable_map_base オブジェクトの最初の要素を表す IIterator。
observable_map_base::GetView 関数
observable_map_base オブジェクトの変更できないビューを取得します。
構文
winrt::Windows::Foundation::Collections::IMapView<K, V> GetView() const;
戻り値
observable_map_baseの変更できないビューを含む IMapView。
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 オブジェクト内の要素の数を表す値。