QHashIterator Class

template <typename Key, typename T> class QHashIterator

QHashIterator クラスは、QHash およびQMultiHash 用の Java スタイルの const イテレータを提供します。さらに...

ヘッダー #include <QHashIterator>
CMake: find_package(Qt6 REQUIRED COMPONENTS Core)
target_link_libraries(mytarget PRIVATE Qt6::Core)
qmake: QT += core

パブリック関数

QHashIterator(const QHash<Key, T> &hash)
bool findNext(const T &value)
bool hasNext() const
const Key &key() const
QHashIterator<Key, T>::Item next()
QHashIterator<Key, T>::Item peekNext() const
void toBack()
void toFront()
const T &value() const
QHashIterator<Key, T> &operator=(const QHash<Key, T> &hash)

詳細説明

QHash にはJavaスタイルのイテレータと STLスタイルのイテレータの両方がある。STLスタイルのイテレータの方が効率的であり、そちらを優先すべきである。

QHashIterator<Key, T> を使用すると、QHash (またはQMultiHash )に対して反復処理を行うことができます。ハッシュを繰り返しながら変更したい場合は、QMutableHashIterator を使用してください。

QHashIterator コンストラクタは、引数としてQHash を取ります。構築後、イテレータはハッシュの一番最初(最初の項目の前)に位置します。以下は、すべての要素を順次反復処理する方法です:

QHash<intQWidget*> ハッシュ;...QHashIterator<intQWidget*>i(hash);while(i.hasNext()) { i.next();    qDebug() << i.key() << ": " << i.value();
}

next() 関数は、ハッシュ内の次の項目を返し、イテレータを進める。key() とvalue() 関数は、最後にジャンプオーバーした項目のキーと値を返します。

STLスタイルのイテレータとは異なり、Javaスタイルのイテレータは、項目を直接指すのではなく、項目間を指します。next() の最初の呼び出しは、イテレータを最初の項目と 2 番目の項目の間の位置に進め、最初の項目を返します。next() の 2 番目の呼び出しは、イテレータを 2 番目の項目と 3 番目の項目の間の位置に進めます。

特定の値の出現箇所をすべて検索したい場合は、findNext ()をループ内で使用する。例えば

QHashIterator<intQWidget*>i(hash);while(i.findNext(widget)) { { i.findNext(widget)    qDebug() << "Found widget " << widget << " under key "
            <<i.key(); }

同じハッシュに対して複数のイテレータを使用することができます。QHashIterator がアクティブな状態でハッシュが変更された場合、QHashIterator は元のハッシュに対する反復処理を続け、変更されたコピーは無視されます。

QMutableHashIterator およびQHash::const_iteratorも参照してください

メンバ関数ドキュメント

QHashIterator::QHashIterator(const QHash<Key, T> &hash)

hash を走査するためのイテレータを構築します。イテレータはハッシュの先頭 (最初の項目の前) に設定されます。

operator=()も参照ください

QHashIterator<Key, T> &QHashIterator::operator=(const QHash<Key, T> &hash)

イテレータをhash に対して動作させる。イテレータはハッシュの先頭(最初の項目の前)に設定されます。

toFront() およびtoBack()も参照

void QHashIterator::toFront()

イテレータをコンテナの先頭(最初の項目の前)に移動する。

toBack() およびnext()も参照

void QHashIterator::toBack()

イテレータをコンテナの後ろ(最後のアイテムの後)に移動します。

toFront()も参照

bool QHashIterator::hasNext() const

イテレータの前に少なくとも1つのアイテムがある場合、つまりイテレータがコンテナの後ろにない場合はtrue を返し、そうでない場合はfalse を返す。

next()も参照

const Key &QHashIterator::key() const

トラバーサル関数 (next(),findNext()) のいずれかを使用して最後にジャンプオーバーした項目のキーを返します。

value()も参照

bool QHashIterator::findNext(const T &value)

現在のイテレータ位置から前方に向かってvalue を検索する。値value を持つ (key, value) ペアが見つかればtrue を返し、見つからなければfalse を返す。

呼び出し後、value が見つかった場合、イテレータは一致するアイテムの直後に配置されます。そうでない場合、イテレータはコンテナの後ろに配置されます。

QHashIterator<Key, T>::Item QHashIterator::next()

次の項目を返し、イテレータを 1 つ進めます。

返り値に対してkey() をコールしてアイテムのキーを取得し、value() をコールして値を取得する。

コンテナの後方に位置するイテレータに対してこの関数を呼び出すと、未定義の結果になります。

hasNext() およびpeekNext()も参照

QHashIterator<Key, T>::Item QHashIterator::peekNext() const

イテレータを移動させずに次の項目を返す。

返り値に対してkey() をコールしてアイテムのキーを取得し、value() をコールして値を取得する。

コンテナの奥にあるイテレータに対してこの関数を呼び出すと、未定義の結果になります。

hasNext() およびnext()も参照

const T &QHashIterator::value() const

トラバーサル関数 (next(),findNext()) のいずれかを使用して最後にジャンプオーバーした項目の値を返す。

key()も参照

© 2025 The Qt Company Ltd. Documentation contributions included herein are the copyrights of their respective owners. The documentation provided herein is licensed under the terms of the GNU Free Documentation License version 1.3 as published by the Free Software Foundation. Qt and respective logos are trademarks of The Qt Company Ltd. in Finland and/or other countries worldwide. All other trademarks are property of their respective owners.