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 함수 | 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 개체의 요소 수를 검색합니다. |
반복기
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 예외가 throw됩니다.
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 개체의 요소 수를 나타내는 값입니다.