QMultiMapIterator Class
template <typename Key, typename T> class QMultiMapIteratorQMultiMapIterator クラスは、QMultiMap に対して Javaスタイルのconst イテレータを提供します。QMultiMap には、Java スタイルのイテレータと STL スタイルのイテレータの両方が用意されています。STL スタイルのイテレータの方が効率が良いため、そちらを使用することをお勧めします。テンプレートパラメータKey はマップのキー型を指定し、T は値型を指定します。詳細...
| ヘッダー: | #include <QMultiMapIterator> |
| CMake: | find_package(Qt6 REQUIRED COMPONENTS Core) target_link_libraries(mytarget PRIVATE Qt6::Core) |
| qmake: | QT += core |
- 継承されたメンバーを含むすべてのメンバーの一覧
- QMultiMapIterator は、Qt の Java スタイルのイテレータの一部です。
パブリック関数
| QMultiMapIterator(const QMultiMap<Key, T> &map) | |
| bool | findNext(const T &value) |
| bool | findPrevious(const T &value) |
| bool | hasNext() const |
| bool | hasPrevious() const |
| const Key & | key() const |
| QMultiMapIterator<Key, T>::Item | next() |
| QMultiMapIterator<Key, T>::Item | peekPrevious() const |
| QMultiMapIterator<Key, T>::Item | previous() |
| void | toBack() |
| void | toFront() |
| const T & | value() const |
| QMultiMapIterator<Key, T> & | operator=(const QMultiMap<Key, T> &map) |
詳細な説明
QMultiMapIterator<Key, T> を使用すると、QMultiMap を反復処理できます。反復処理中にマップを変更したい場合は、代わりにQMutableMultiMapIterator を使用してください。
QMultiMapIteratorのコンストラクタは、QMultiMap を引数として受け取ります。構築後、イテレータはマップの先頭(最初の要素の前)に位置します。すべての要素を順次反復処理する方法は次のとおりです:
QMultiMap<int,QWidget*>multimap;
//...
QMultiMapIterator<int,QWidget*>i(multimap);
while(i.hasNext()) {
i.next();
qDebug() << i.key() << ": " << i.value();
}next() 関数は、マップ内の次の要素を返し、イテレータを進めます。key() およびvalue() 関数は、スキップされた直前の要素のキーと値を返します。
STL スタイルのイテレータとは異なり、Java スタイルのイテレータは、要素そのものを直接指すのではなく、要素間の位置を指します。next() を最初に呼び出すと、イテレータは 1 番目と 2 番目の要素の間にある位置に進み、1 番目の要素が返されます。次にnext() を呼び出すと、イテレータは 2 番目と 3 番目の要素の間にある位置に進みます。以下、同様です。
要素を逆順に反復処理する方法は次のとおりです:
QMultiMapIterator<int,QWidget*>i(multimap);
i.toBack();
while(i.hasPrevious()) {
i.previous();
qDebug() << i.key() << ": " << i.value();
}特定の値がどこに現れるかをすべて検索したい場合は、ループ内で `findNext()` または `findPrevious()` を使用します。例:
QMultiMapIterator<int,QWidget*>i(multimap);
while(i.findNext(widget)) {
qDebug() << "Found widget " << widget << " under key "
<<i.key();
}同じマップに対して複数のイテレータを使用することができます。QMultiMapIterator がアクティブな状態でマップが変更された場合、QMultiMapIterator は変更されたコピーを無視して、元のマップに対してイテレーションを継続します。
QMutableMultiMapIteratorも参照してください 。
メンバ関数のドキュメント
QMultiMapIterator::QMultiMapIterator(const QMultiMap<Key, T> &map)
map を走査するためのイテレータを作成します。このイテレータは、マップの先頭(最初の要素の前)に位置するように設定されます。
operator=()も参照してください 。
bool QMultiMapIterator::findNext(const T &value)
現在のイテレータ位置から前方に向かって、value を検索します。値がvalue である (key, value) のペアが見つかった場合はtrue を返し、見つからなかった場合はfalse を返します。
呼び出し後、value が見つかった場合は、イテレータは一致した項目の直後に位置付けられます。見つからなかった場合は、イテレータはコンテナの末尾に位置付けられます。
findPrevious()も参照してください 。
bool QMultiMapIterator::findPrevious(const T &value)
現在のイテレータ位置から過去に向かって、value を検索します。値がvalue である (key, value) のペアが見つかった場合はtrue を返し、見つからなかった場合はfalse を返します。
呼び出し後、value が見つかった場合は、イテレータは一致する項目の直前に位置付けられます。見つからなかった場合は、イテレータはコンテナの先頭に位置付けられます。
findNext()も参照してください 。
bool QMultiMapIterator::hasNext() const
イテレータの先方に少なくとも1つの要素が存在する場合、つまりイテレータがコンテナの末尾にない場合は、true を返します。それ以外の場合は、false を返します。
hasPrevious() およびnext()も参照してください 。
bool QMultiMapIterator::hasPrevious() const
イテレータの先頭より後ろに少なくとも1つの要素が存在する場合、つまりイテレータがコンテナの先頭にあるわけではない場合は、true を返します。それ以外の場合は、false を返します。
hasNext() およびprevious()も参照してください 。
const Key &QMultiMapIterator::key() const
トラバーサル関数(next()、previous()、findNext()、findPrevious())のいずれかを使用してスキップされた最後の項目のキーを返します。
next() またはfindNext() の呼び出し後は、key() はpeekPrevious() と同等になります。key()。previous() またはfindPrevious() の呼び出し後は、key() は peekNext() と同等になります。key()。
value()も参照してください 。
QMultiMapIterator<Key, T>::Item QMultiMapIterator::next()
次の項目を返し、イテレータを1つ進めます。
戻り値に対して `key()` を呼び出すと項目のキーを取得でき、`value()` を呼び出すと値を取得できます。
コンテナの末尾にあるイテレータに対してこの関数を呼び出すと、未定義の結果となります。
hasNext()、peekNext()、およびprevious()も参照してください 。
QMultiMapIterator<Key, T>::Item QMultiMapIterator::peekPrevious() const
イテレータを移動させることなく、前の項目を返します。
戻り値に対してkey()を呼び出すと項目のキーを取得でき、value()を呼び出すと値を取得できます。
コンテナの先頭にあるイテレータに対してこの関数を呼び出すと、定義されていない結果になります。
hasPrevious()、previous()、およびpeekNext()も参照してください 。
QMultiMapIterator<Key, T>::Item QMultiMapIterator::previous()
前の項目を返し、イテレータを1つ前の位置に移動します。
返り値に対してkey()を呼び出すと項目のキーを取得でき、value()を呼び出すと値を取得できます。
コンテナの先頭にあるイテレータに対してこの関数を呼び出すと、未定義の結果となります。
hasPrevious()、peekPrevious()、およびnext()も参照してください 。
void QMultiMapIterator::toBack()
イテレータをコンテナの末尾(最後の要素の直後)に移動します。
toFront() およびprevious()も参照してください 。
void QMultiMapIterator::toFront()
イテレータをコンテナの先頭(最初の要素の前)に移動します。
const T &QMultiMapIterator::value() const
トラバーサル関数(next()、previous()、findNext()、findPrevious())のいずれかを使用してスキップされた最後の項目の値を返します。
next() またはfindNext() の呼び出し後、value() はpeekPrevious() と同等になります。value()。previous() またはfindPrevious() の呼び出し後、value() は peekNext() と同等になります。value()。
key()も参照してください 。
QMultiMapIterator<Key, T> &QMultiMapIterator::operator=(const QMultiMap<Key, T> &map)
イテレータが `map` 上で動作するようにします。イテレータはマップの先頭(最初の要素の前)に位置するように設定されます。
© 2026 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.