winrt::observable_vector_base 構造体テンプレート (C++/WinRT)
独自のカスタム観測可能なベクターを実装するために派生できる基底クラス。 詳細とコード例については、「 C++/WinRT を使用したコレクション」を参照してください。
構文
template <typename D, typename T>
struct observable_vector_base : vector_base<D, T>
テンプレート パラメーター
typename D
派生型名。
typename T
observable_vector_base内の要素の型。
必要条件
サポートされている最小 SDK: Windows SDK バージョン 10.0.17763.0 (Windows 10 Version 1809)
名前空間: winrt
ヘッダー: %WindowsSdkDir%IncludeWindowsTargetPlatformVersion<>\cppwinrt\winrt\base.h (既定で含まれています)
メンバー関数
機能 | 説明 |
---|---|
observable_vector_base::Append 関数 | observable_vector_base オブジェクトの末尾に要素を追加します。 |
observable_vector_base::Clear 関数 | observable_vector_base オブジェクトからすべての要素を削除します。 |
observable_vector_base::First 関数 | observable_vector_base オブジェクトの最初の要素を表す IIterator を取得します。 |
observable_vector_base::GetAt 関数 | observable_vector_base オブジェクト内の指定したインデックス位置にある要素を取得します。 |
observable_vector_base::GetMany 関数 | 指定したインデックスから始まる observable_vector_base オブジェクト内の要素のコレクションを取得します。 |
observable_vector_base::GetView 関数 | observable_vector_base オブジェクトの変更できないビューを取得します。 |
observable_vector_base::IndexOf 関数 | observable_vector_base オブジェクト内の指定した要素のインデックスを取得します。 |
observable_vector_base::InsertAt 関数 | observable_vector_base オブジェクト内の指定したインデックス位置に要素を挿入します。 |
observable_vector_base::RemoveAt 関数 | observable_vector_base オブジェクト内の指定したインデックス位置にある要素 を 削除します。 |
observable_vector_base::RemoveAtEnd 関数 | observable_vector_base オブジェクトから最後の要素を削除します。 |
observable_vector_base::ReplaceAll 関数 | observable_vector_base オブジェクト内のすべての要素を、指定した要素に置き換えます。 |
observable_vector_base::SetAt 関数 | observable_vector_base オブジェクト内の指定したインデックス位置にある要素の値を設定します。 |
observable_vector_base::Size 関数 | observable_vector_base オブジェクト内の要素の数を取得します。 |
observable_vector_base::VectorChanged 関数 | observable_vector_base オブジェクトのベクター変更イベントを処理するデリゲートを登録および取り消します。 |
Iterators
observable_vector_baseは範囲であり、その範囲は、標準言語機能と互換性のある内部フリー関数 (それぞれが反復子を取得) によって定義されます。 このため、範囲ベースfor
のステートメントを使用して、observable_vector_base オブジェクト内の要素を列挙できます。
また、observable_vector_base::First 関数から IIterator を取得し、これを使用して、observable_vector_base オブジェクト内の要素を反復処理することもできます。
...
#include <iostream>
using namespace winrt;
using namespace Windows::Foundation::Collections;
...
struct MyObservableVector :
implements<MyObservableVector, IObservableVector<float>, IVector<float>, IVectorView<float>, IIterable<float>>,
winrt::observable_vector_base<MyObservableVector, float>
{
auto& get_container() const noexcept
{
return m_values;
}
auto& get_container() noexcept
{
return m_values;
}
private:
std::vector<float> m_values{ 0.1f, 0.2f, 0.3f };
};
...
IObservableVector<float> coll{ winrt::make<MyObservableVector>() };
for (auto const& el : coll)
{
std::wcout << el << std::endl;
}
IIterator<float> it{ coll.First() };
while (it.HasCurrent())
{
std::wcout << it.Current() << std::endl;
it.MoveNext();
}
observable_vector_base::Append 関数
observable_vector_base オブジェクトの末尾に要素を追加します。
構文
void Append(T const& value);
パラメーター
value
追加する要素。
observable_vector_base::Clear 関数
observable_vector_base オブジェクトからすべての要素を削除します。
構文
void Clear() noexcept;
observable_vector_base::First 関数
observable_vector_base オブジェクトの最初の要素を表す IIterator を取得します。
構文
auto First();
戻り値
observable_vector_base オブジェクトの最初の要素を表す IIterator。
observable_vector_base::GetAt 関数
observable_vector_base オブジェクト内の指定したインデックス位置にある要素を取得します。
構文
T GetAt(uint32_t const index) const;
パラメーター
index
0 から始まる要素インデックス。
戻り値
observable_vector_base オブジェクト内の指定したインデックス位置にある要素。
observable_vector_base::GetMany 関数
指定したインデックスから始まる observable_vector_base オブジェクト内の要素のコレクションを取得します。
構文
uint32_t GetMany(uint32_t const startIndex, array_view<T> values) const;
パラメーター
startIndex
開始位置の 0 から始まる要素インデックス。
values
アイテムをコピーする array_view 。
戻り値
取得された要素の数を表す値。
observable_vector_base::GetView 関数
observable_vector_base オブジェクトの変更できないビューを取得します。
構文
winrt::Windows::Foundation::Collections::IVectorView<T> GetView() const noexcept;
戻り値
observable_vector_baseの変更できないビューを含む IVectorView。
observable_vector_base::IndexOf 関数
observable_vector_base オブジェクト内の指定した要素のインデックスを取得します。
構文
bool IndexOf(T const& value, uint32_t& index) const noexcept;
パラメーター
value
検索するobservable_vector_base オブジェクト内の要素。
index
要素が見つかった場合の要素の 0 から始まるインデックス。それ以外の場合は 、observable_vector_base オブジェクト内の要素の数。
戻り値
true
要素が見つかった場合は .、それ以外の場合 false
は .
observable_vector_base::InsertAt 関数
observable_vector_base オブジェクト内の指定したインデックス位置に要素を挿入します。
構文
void InsertAt(uint32_t const index, T const& value);
パラメーター
index
要素を挿入する 0 から始まるインデックス。
value
挿入する要素。
observable_vector_base::RemoveAt 関数
observable_vector_base オブジェクト内の指定したインデックス位置にある要素 を 削除します。
構文
void RemoveAt(uint32_t const index);
パラメーター
index
削除する要素の 0 から始まるインデックス。
observable_vector_base::RemoveAtEnd 関数
observable_vector_base オブジェクトから最後の要素を削除します。
構文
void RemoveAtEnd();
observable_vector_base::ReplaceAll 関数
observable_vector_base オブジェクト内のすべての要素を、指定した要素に置き換えます。
構文
void ReplaceAll(array_view<T const> value);
パラメーター
value
新しい要素を含む array_view 。
observable_vector_base::SetAt 関数
observable_vector_base オブジェクト内の指定したインデックス位置にある要素の値を設定します。
構文
void SetAt(uint32_t const index, T const& value);
パラメーター
index
値を設定する要素の 0 から始まるインデックス。
value
設定する要素値。
observable_vector_base::Size 関数
observable_vector_base オブジェクト内の要素の数を取得します。
構文
uint32_t Size() const noexcept;
戻り値
observable_vector_base オブジェクト内の要素の数を表す値。
observable_vector_base::VectorChanged 関数
observable_vector_base オブジェクトのベクター変更イベントを処理するデリゲートを登録または取り消します。
構文
// Register
winrt::event_token VectorChanged(winrt::Windows::Foundation::Collections::VectorChangedEventHandler<T> const& handler);
// Revoke with event_token
void VectorChanged(winrt::event_token const cookie);
// Revoke with event_revoker
VectorChanged_revoker VectorChanged(winrt::auto_revoke_t, winrt::Windows::Foundation::Collections::VectorChangedEventHandler<T> const& handler) const;
戻り値
登録void
されたデリゲートを取り消すことができる winrt::event_token、または登録されたデリゲートを取り消すことができるVectorChanged_revoker (winrt::event_revoker< IObservableVectorT<>> の型エイリアス) のいずれかです。
例
winrt::event_revoker<IObservableVector<float>> m_event_revoker;
...
m_event_revoker = coll.VectorChanged(winrt::auto_revoke, [this](IObservableVector<float> const&, IVectorChangedEventArgs const&)
{
...
});