QHashIterator Class

template <typename Key, typename T> class QHashIterator

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

Header: #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<int, QWidget *> hash;
...
QHashIterator<int, 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 ()をループ内で使用する。例えば

QHashIterator<int, QWidget *> i(hash);
while (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()も参照

©2024 The Qt Company Ltd. 本文書に含まれる文書の著作権は、それぞれの所有者に帰属します。 本書で提供されるドキュメントは、Free Software Foundation が発行したGNU Free Documentation License version 1.3に基づいてライセンスされています。 Qtおよびそれぞれのロゴは、フィンランドおよびその他の国におけるThe Qt Company Ltd.の 商標です。その他すべての商標は、それぞれの所有者に帰属します。