次の方法で共有


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 Version 1809)

名前空間: winrt

ヘッダー: %WindowsSdkDir%IncludeWindowsTargetPlatformVersion<>\cppwinrt\winrt\base.h (既定で含まれます)

メンバー関数

機能 説明
map_base::Clear 関数 map_base オブジェクトからすべての要素を削除します。
map_base::First 関数 map_base オブジェクトの最初の要素を表す IIterator を取得します。
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 オブジェクト内の要素の数を取得します。

Iterators

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 関数

map_base オブジェクトの最初の要素を表す IIterator を取得します。

構文

auto First();

戻り値

map_base オブジェクトの最初の要素を表す IIterator

map_base::GetView 関数

map_base オブジェクトの変更できないビューを取得します。

構文

winrt::Windows::Foundation::Collections::IMapView<K, V> GetView() const;

戻り値

map_baseの変更できないビューを含む IMapView

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 オブジェクト内の要素の数を表す値。

こちらもご覧ください