QMutableMapIterator Class

template <typename Key, typename T> class QMutableMapIterator

QMutableMapIteratorクラスは、QMap 、Javaスタイルの非定数イテレータを提供します。さらに...

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

パブリック関数

QMutableMapIterator(QMap<Key, T> &map)
bool findNext(const T &value)
bool findPrevious(const T &value)
bool hasNext() const
bool hasPrevious() const
const Key &key() const
QMutableMapIterator<Key, T>::Item next()
QMutableMapIterator<Key, T>::Item peekNext() const
QMutableMapIterator<Key, T>::Item peekPrevious() const
QMutableMapIterator<Key, T>::Item previous()
void remove()
void setValue(const T &value)
void toBack()
void toFront()
const T &value() const
T &value()
QMutableMapIterator<Key, T> &operator=(QMap<Key, T> &map)

詳細説明

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

QMutableMapIterator<Key, T> を使うと、QMap を繰り返し処理し、マップを修正することができます。マップを変更したくない場合(あるいは constQMap )、代わりに少し高速なQMapIterator

QMutableMapIteratorコンストラクタは、引数としてQMap 。構築後、イテレーターはマップの一番最初(最初のアイテムの前)に位置します。以下は、全ての要素を順次反復処理する方法です:

QMap<intQWidget*> map;...QMutableMapIterator<intQWidget*> i(map);while(i.hasNext()) { i.next();    qDebug() << i.key() << ": " << i.value();
}

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

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

以下は、要素を逆順に反復処理する方法です:

QMutableMapIterator<intQWidget*> i(map); i.toBack();while(i.hasPrevious()) { i.previous();    qDebug() << i.key() << ": " << i.value();
}

特定の値の出現回数をすべて見つけたい場合は、findNext ()またはfindPrevious ()をループ内で使用する。例えば

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

マップを繰り返しながら項目を削除したい場合は、remove ()を使用する。項目の値を変更したい場合は、setValue() を使用します。

QMutableMapIterator<QString, QString> i(map);
while (i.hasNext()) {
    i.next();
    if (i.key() == i.value())
        i.remove();
}

この例では、キーと値が同じ (key, value) のペアをすべて削除しています。

あるマップ上でいつでもアクティブにできるミュータブル・イテレータは1つだけです。さらに、イテレータがアクティブな間は(イテレータを通してではなく)マップに直接変更を加えるべきではありません。

QMapIterator およびQMap::iteratorも参照して ください。

メンバ関数ドキュメント

QMutableMapIterator::QMutableMapIterator(QMap<Key, T> &map)

map を走査するためのイテレータを構築する。イテレータはマップの先頭 (最初のアイテムの前) に設定されます。

operator=()も参照

QMutableMapIterator<Key, T> &QMutableMapIterator::operator=(QMap<Key, T> &map)

イテレータをmap で動作させる。イテレータはマップの先頭(最初の項目の前)に設定される。

toFront() およびtoBack()も参照のこと

void QMutableMapIterator::toFront()

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

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

void QMutableMapIterator::toBack()

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

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

bool QMutableMapIterator::hasNext() const

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

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

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

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

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

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

hasNext()、peekNext()、previous()も参照

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

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

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

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

hasNext()、next()、peekPrevious()も参照

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

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

アイテムのキーを取得するには戻り値に対してkey() を、値を取得するにはvalue() を呼び出します。

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

hasNext()、next()、peekPrevious()も参照

bool QMutableMapIterator::hasPrevious() const

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

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

QMutableMapIterator<Key, T>::Item QMutableMapIterator::previous()

前の項目を返し、イテレータを 1 つ後ろに移動する。

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

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

hasPrevious()、peekPrevious()、next()も参照

QMutableMapIterator<Key, T>::Item QMutableMapIterator::peekPrevious() const

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

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

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

hasPrevious()、previous()、peekNext()も参照

const T &QMutableMapIterator::value() const

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

next() またはfindNext() を呼び出した後、value() はpeekPrevious() と等価である。value().previous()またはfindPrevious()へのコールの後、value()はpeekNext()と等価である。value()。

key() およびsetValue()も参照の こと。

T &QMutableMapIterator::value()

これはオーバーロードされた関数である。

トラバーサル関数のいずれかを使って最後にジャンプオーバーした項目の値への nononst リファレンスを返します。

const Key &QMutableMapIterator::key() const

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

next() またはfindNext() を呼び出した後、key() はpeekPrevious() と等価である。key().previous()またはfindPrevious()へのコールの後、key()はpeekNext()と等価である。key()。

value()も参照

bool QMutableMapIterator::findNext(const T &value)

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

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

findPrevious()も参照のこと

bool QMutableMapIterator::findPrevious(const T &value)

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

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

findNext()も参照のこと

void QMutableMapIterator::remove()

トラバーサル関数 (next()、previous()、findNext()、findPrevious()) のいずれかを使用してジャンプオーバーした最後の項目を削除する。

setValue()も参照

void QMutableMapIterator::setValue(const T &value)

トラバーサル関数の1つを使用してジャンプオーバーされた最後の項目の値をvalue で置き換える。

走査関数は、next()、previous()、findNext()、findPrevious() である。

key()、value()、remove()も参照のこと

© 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.