QMutableSetIterator Class
template <typename T> class QMutableSetIteratorQMutableSetIterator クラスは、QSet に対して Java スタイルの非定数イテレータを提供します。詳細...
| ヘッダー: | #include <QMutableSetIterator> |
| CMake: | find_package(Qt6 REQUIRED COMPONENTS Core) target_link_libraries(mytarget PRIVATE Qt6::Core) |
| qmake: | QT += core |
- 継承されたメンバーを含む、すべてのメンバーの一覧
- QMutableSetIterator は、Qt の Java スタイルのイテレータの一部です。
パブリック関数
| QMutableSetIterator(QSet<T> &set) | |
| bool | findNext(const T &value) |
| bool | hasNext() const |
| const T & | next() |
| const T & | peekNext() const |
| void | remove() |
| void | toBack() |
| void | toFront() |
| const T & | value() const |
| QMutableSetIterator<T> & | operator=(QSet<T> &set) |
詳細な説明
QSet には、Java スタイルのイテレータと STL スタイルのイテレータの両方が用意されています。STL スタイルのイテレータの方が効率が良いため、そちらを使用することをお勧めします。テンプレートパラメータT は、セットに格納される項目の型を指定します。
QMutableSetIterator<T> を使用すると、QSet<T> を反復処理し、反復処理中にセットから項目を削除することができます。セットを変更したくない場合(または constQSet を使用している場合)は、代わりに、わずかに高速なQSetIterator<T> を使用してください。
QMutableSetIterator のコンストラクタは、QSet を引数として受け取ります。構築後、イテレータはセットの先頭(最初の要素の前)に位置します。すべての要素を順次反復処理する方法は次のとおりです。
QSet<float> set;
//...
QMutableSetIterator<float> i(set);
while (i.hasNext())
float f = i.next();next() 関数は、セット内の次の要素を返し、イテレータを進めます。STL スタイルのイテレータとは異なり、Java スタイルのイテレータは要素を直接指すのではなく、要素間の位置を指します。next() の最初の呼び出しは、イテレータを 1 番目と 2 番目の要素の間の位置に進め、1 番目の要素を返します。next() の 2 番目の呼び出しは、イテレータを 2 番目と 3 番目の要素の間の位置に進め、2 番目の要素を返します。以下同様です。
セットを反復処理しながら項目を削除したい場合は、remove() を使用してください。
特定のセットに対して、一度にアクティブにできる可変イテレータは1つだけです。さらに、イテレータがアクティブな間は(イテレータを介してではなく)セットに対して直接変更を行ってはなりません。そうすると、イテレータが無効になり、未定義の挙動を引き起こす恐れがあるためです。
QSetIterator およびQSet::iteratorも参照してください 。
メンバ関数のドキュメント
QMutableSetIterator::QMutableSetIterator(QSet<T> &set)
set を順にたどるためのイテレータを作成します。このイテレータは、セットの先頭(最初の要素の前)に位置するように設定されます。
operator=()も参照してください 。
bool QMutableSetIterator::findNext(const T &value)
現在のイテレータの位置から前方に向かって、value を検索します。value が見つかった場合は `true ` を返し、見つからなかった場合は `false` を返します。
呼び出し後、value が見つかった場合は、イテレータは一致した項目の直後に位置付けられます。見つからなかった場合は、イテレータはコンテナの末尾に位置付けられます。
bool QMutableSetIterator::hasNext() const
イテレータの先方に少なくとも1つの要素が存在する場合、つまりイテレータがコンテナの末尾にない場合は、true を返します。それ以外の場合は、false を返します。
next()も参照してください 。
const T &QMutableSetIterator::next()
次の要素を返し、イテレータを1つ進めます。
コンテナの末尾にあるイテレータに対してこの関数を呼び出すと、未定義の結果となります。
hasNext() およびpeekNext()も参照してください 。
const T &QMutableSetIterator::peekNext() const
イテレータを移動させることなく、次の要素を返します。
コンテナの末尾にあるイテレータに対してこの関数を呼び出すと、未定義の結果となります。
hasNext() およびnext()も参照してください 。
void QMutableSetIterator::remove()
トラバーサル関数(next()、findNext())のいずれかを使用してスキップされた最後の項目を削除します。
例:
QMutableSetIterator<int> i(set);
while (i.hasNext()) {
int val = i.next();
if (val < -32768 || val > 32767)
i.remove();
}value()も参照してください 。
void QMutableSetIterator::toBack()
イテレータをコンテナの末尾(最後の要素の直後)に移動します。
toFront()も参照してください 。
void QMutableSetIterator::toFront()
イテレータをコンテナの先頭(最初の要素の前)に移動します。
const T &QMutableSetIterator::value() const
next() またはfindNext() を使用してスキップされた最後の項目の値を返します。
QMutableSetIterator<T> &QMutableSetIterator::operator=(QSet<T> &set)
イテレータが `set` 上で動作するようにします。イテレータは、セットの先頭(最初の要素の前)に位置するように設定されます。
© 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.