QMutableHashIterator Class
template <typename Key, typename T> class QMutableHashIteratorQMutableHashIteratorクラスは、Javaスタイルの非定数イテレータをQHash 、QMultiHash 。さらに...
Header: | #include <QMutableHashIterator> |
CMake: | find_package(Qt6 REQUIRED COMPONENTS Core) target_link_libraries(mytarget PRIVATE Qt6::Core) |
qmake: | QT += core |
パブリック関数
QMutableHashIterator(QHash<Key, T> &hash) | |
bool | findNext(const T &value) |
bool | hasNext() const |
const Key & | key() const |
QMutableHashIterator<Key, T>::Item | next() |
QMutableHashIterator<Key, T>::Item | peekNext() const |
void | remove() |
void | setValue(const T &value) |
void | toBack() |
void | toFront() |
const T & | value() const |
T & | value() |
QMutableHashIterator<Key, T> & | operator=(QHash<Key, T> &hash) |
詳細説明
QHash にはJavaスタイルのイテレータと STLスタイルのイテレータの両方がある。STLスタイルのイテレータの方が効率的であり、そちらを優先すべきです。
QMutableHashIterator<Key, T> では、QHash を繰り返し処理し、ハッシュを変更することができます。ハッシュを変更したくない場合(あるいは、定数QHash )は、代わりに少し高速なQHashIterator 。
QMutableHashIteratorコンストラクタは、引数としてQHash 。構築後、イテレーターはハッシュの一番最初(最初のアイテムの前)に位置します。以下は、すべての要素を順次反復処理する方法です:
QHash<int, QWidget *> hash; ... QMutableHashIterator<QString, QWidget *> i(hash); while (i.hasNext()) { i.next(); qDebug() << i.key() << ": " << i.value(); }
next() 関数はハッシュの次の項目を返し、イテレータを進める。key() とvalue() 関数は、最後にジャンプオーバーした項目のキーと値を返します。
STLスタイルのイテレータとは異なり、Javaスタイルのイテレータは、項目を直接指定するのではなく、項目間を指定します。next ()の最初の呼び出しは、イテレータを最初の項目と2番目の項目の間の位置に進め、最初の項目を返します。next ()の2番目の呼び出しは、イテレータを2番目の項目と3番目の項目の間の位置に進めます。
特定の値のすべての出現回数を見つけたい場合は、findNext ()をループ内で使用する。例えば
QMutableHashIterator<int, QWidget *> i(hash); while (i.findNext(widget)) { qDebug() << "Found widget " << widget << " under key " << i.key(); }
ハッシュを繰り返しながら項目を削除したい場合は、remove ()を使用する。項目の値を変更したい場合は、setValue() を使用する。
例
QMutableHashIterator<QString, QString> i(hash); while (i.hasNext()) { i.next(); if (i.key() == i.value()) i.remove(); }
この例では、キーと値が同じ (key, value) のペアをすべて削除しています。
与えられたハッシュに対して、いつでもアクティブにできるミュータブル・イテレータは1つだけです。さらに、イテレータがアクティブな間は(イテレータを通してではなく)ハッシュに直接変更を加えてはいけません。イテレータが無効になり、未定義の動作につながる可能性があるからです。
QHashIterator およびQHash::iteratorも参照して ください。
メンバ関数ドキュメント
QMutableHashIterator::QMutableHashIterator(QHash<Key, T> &hash)
hash をトラバースするためのイテレータを構築する。イテレータはハッシュの先頭(最初の項目の前)に設定されます。
operator=()も参照 。
QMutableHashIterator<Key, T> &QMutableHashIterator::operator=(QHash<Key, T> &hash)
イテレータをhash で操作するようにします。イテレータは、ハッシュの先頭 (最初の項目の前) に設定されます。
void QMutableHashIterator::toFront()
イテレータをコンテナの先頭 (最初の項目の前) に移動します。
void QMutableHashIterator::toBack()
イテレータをコンテナの後ろ (最後の項目の後) に移動します。
toFront()も参照 。
bool QMutableHashIterator::hasNext() const
イテレータの前に少なくとも 1 つの項目がある場合、つまりイテレータがコンテナの後ろにない場合はtrue
を返し、そうでない場合はfalse
を返す。
next()も参照 。
T &QMutableHashIterator::value()
これはオーバーロードされた関数です。
トラバーサル関数のいずれかを使用してジャンプオーバーされた最後のアイテムの値への nononst リファレンスを返します。
const Key &QMutableHashIterator::key() const
トラバーサル関数 (next(),findNext()) を使用して最後にジャンプオーバーした項目のキーを返します。
value()も参照 。
bool QMutableHashIterator::findNext(const T &value)
現在のイテレータ位置から前方に向かってvalue を検索します。値value を持つ (key, value) ペアが見つかった場合はtrue
を返し、 見つからなかった場合はfalse
を返す。
呼び出し後、value が見つかった場合、イテレータは一致する項目の直後に配置される。そうでない場合、イテレータはコンテナの後ろに配置される。
QMutableHashIterator<Key, T>::Item QMutableHashIterator::next()
次の項目を返し、イテレータを1つ進める。
戻り値に対してkey() をコールしてアイテムのキーを取得し、value() をコールして値を取得する。
コンテナの後方に位置するイテレータに対してこの関数を呼び出すと、未定義の結果になります。
QMutableHashIterator<Key, T>::Item QMutableHashIterator::peekNext() const
イテレータを移動せずに、次の項目への参照を返します。
項目のキーを取得するには戻り値でkey() を呼び出し、値を取得するにはvalue() を呼び出します。
コンテナの後方に位置するイテレータに対してこの関数を呼び出すと、未定義の結果になります。
void QMutableHashIterator::remove()
トラバーサル関数 (next()、findNext()) のいずれかを使用してジャンプオーバーした最後の項目を削除します。
setValue() も参照 。
void QMutableHashIterator::setValue(const T &value)
トラバーサル関数の 1 つを使用してジャンプオーバーされた最後の項目の値をvalue で置き換えます。
走査関数は、next() およびfindNext() です。
const T &QMutableHashIterator::value() const
トラバーサル関数 (next(),findNext()) のいずれかを使用して最後にジャンプオーバーした項目の値を返します。
©2024 The Qt Company Ltd. 本書に含まれる文書の著作権は、それぞれの所有者に帰属します。 本書で提供されるドキュメントは、Free Software Foundation が発行したGNU Free Documentation License version 1.3に基づいてライセンスされています。 Qtおよびそれぞれのロゴは、フィンランドおよびその他の国におけるThe Qt Company Ltd.の 商標です。その他すべての商標は、それぞれの所有者に帰属します。