QMutableListIterator Class
template <typename T> class QMutableListIteratorQMutableListIteratorクラスは、QList 、QQueue 、QStack に対するJavaスタイルの非定数イテレータを提供します。さらに...
Header: | #include <QMutableListIterator> |
CMake: | find_package(Qt6 REQUIRED COMPONENTS Core) target_link_libraries(mytarget PRIVATE Qt6::Core) |
qmake: | QT += core |
パブリック関数
QMutableListIterator(QList<T> &list) | |
bool | findNext(const T &value) |
bool | findPrevious(const T &value) |
bool | hasNext() const |
bool | hasPrevious() const |
void | insert(const T &value) |
T & | next() |
T & | peekNext() const |
T & | peekPrevious() const |
T & | previous() |
void | remove() |
void | setValue(const T &value) const |
void | toBack() |
void | toFront() |
const T & | value() const |
T & | value() |
QMutableListIterator<T> & | operator=(QList<T> &list) |
詳細説明
QList にはJavaスタイルのイテレータと STLスタイルのイテレータの両方がある。STLスタイルのイテレータの方が効率的であり、そちらを優先すべきである。
イテレータを使う代わりに、インデックス・ポジションを使う方法もある。QList 、ほとんどのメンバ関数はインデックスを最初の引数として取るため、イテレータを使用せずに項目へのアクセス、挿入、削除を行うことができます。
QMutableListIterator<T>を使えば、QList<T>(またはQQueue<T>)を繰り返し処理し、リストを変更することができます。リストを変更したくない場合(あるいは、QList を const で指定したい場合)は、代わりに少し高速なQListIterator<T> を使用してください。
QMutableListIteratorコンストラクタは、引数としてQList 。構築後、イテレーターはリストの一番最初(最初の項目の前)に位置します。以下は、すべての要素を順次反復処理する方法です:
QList<float> list; ... QMutableListIterator<float> i(list); while (i.hasNext()) float f = i.next();
next ()関数はリストの次の項目を返し、イテレータを進めます。STLスタイルのイテレータとは異なり、Javaスタイルのイテレータは、項目を直接指定するのではなく、項目間を指定します。next ()への最初の呼び出しは、イテレータを最初の項目と2番目の項目の間の位置に進め、最初の項目を返します。next ()への2回目の呼び出しは、イテレータを2番目の項目と3番目の項目の間の位置に進め、2番目の項目を返します。
以下は、要素を逆順に反復処理する方法です:
QMutableListIterator<float> i(list); i.toBack(); while (i.hasPrevious()) float f = i.previous();
特定の値の出現回数をすべて見つけたい場合は、findNext ()またはfindPrevious ()をループ内で使用する。
リストを繰り返しながら項目を削除したい場合は、remove ()を使用する。項目の値を変更したい場合は、setValue() を使用します。リストに新しい項目を挿入するには、insert() を使用します。
例
QMutableListIterator<int> i(list); while (i.hasNext()) { int val = i.next(); if (val < 0) { i.setValue(-val); } else if (val == 0) { i.remove(); } }
この例では、リストを走査し、負の数をその絶対値で置き換え、ゼロを除去します。
1つのリストに対して、常に1つの変更可能な反復子しかアクティブにできません。さらに、イテレータがアクティブな間は(イテレータを通してではなく)リストに直接変更を加えてはいけません。
QListIterator およびQList::iteratorも参照して ください。
メンバ関数ドキュメント
QMutableListIterator::QMutableListIterator(QList<T> &list)
list をトラバースするためのイテレータを構築する。イテレータはリストの先頭(最初の項目の前)に設定されます。
operator=()も参照 。
QMutableListIterator<T> &QMutableListIterator::operator=(QList<T> &list)
イテレータをlist で操作するようにします。イテレータは、リストの先頭 (最初の項目の前) に設定されます。
void QMutableListIterator::toFront()
イテレータをコンテナの先頭 (最初の項目の前) に移動します。
void QMutableListIterator::toBack()
イテレータをコンテナの後ろ (最後の項目の後) に移動します。
bool QMutableListIterator::hasNext() const
イテレータの前に少なくとも 1 つの項目がある場合、つまりイテレータがコンテナの後ろにない場合はtrue
を返し、そうでない場合はfalse
を返す。
hasPrevious() およびnext()も参照 。
bool QMutableListIterator::hasPrevious() const
イテレータの後ろに少なくとも1つのアイテムがある場合、つまり、イテレータがコンテナの先頭にない場合はtrue
を返し、そうでない場合はfalse
を返す。
bool QMutableListIterator::findNext(const T &value)
現在のイテレータ位置から前方に向かってvalue を検索します。value が見つかればtrue
を返し、見つからなければfalse
を返す。
呼び出し後、value が見つかった場合、イテレータは一致する項目の直後に配置され、そうでない場合、イテレータはコンテナの後ろに配置されます。
findPrevious()も参照のこと 。
bool QMutableListIterator::findPrevious(const T &value)
現在のイテレータ位置から後方に向かってvalue を検索する。value が見つかればtrue
を返し、見つからなければ false を返す。
呼び出し後、value が見つかった場合、イテレータは一致する項目の直前に配置されます。そうでない場合、イテレータはコンテナの先頭に配置されます。
findNext()も参照 。
void QMutableListIterator::insert(const T &value)
value を現在のイテレータ位置に挿入します。呼び出し後、イテレータは挿入された項目の直後に位置します。
T &QMutableListIterator::next()
次の項目への参照を返し、イテレータを 1 つ進めます。
コンテナの後ろに位置するイテレータに対してこの関数を呼び出すと、未定義の結果になります。
hasNext()、peekNext()、previous()も参照 。
T &QMutableListIterator::peekNext() const
イテレータを移動させずに、次の項目への参照を返す。
コンテナの後ろに位置するイテレータに対してこの関数を呼び出すと、未定義の結果になります。
hasNext()、next()、peekPrevious()も参照 。
T &QMutableListIterator::peekPrevious() const
イテレータを移動させずに、前の項目への参照を返す。
コンテナの先頭に位置するイテレータに対してこの関数を呼び出すと、未定義の結果になります。
hasPrevious()、previous()、peekNext()も参照 。
T &QMutableListIterator::previous()
前の項目への参照を返し、イテレータを 1 つ後ろの位置に移動します。
コンテナの先頭に位置するイテレータに対してこの関数を呼び出すと、未定義の結果になります。
hasPrevious()、peekPrevious()、next()も参照 。
void QMutableListIterator::remove()
トラバーサル関数 (next(),previous(),findNext(),findPrevious()) のいずれかを使用してジャンプオーバーした最後の項目を削除します。
例:
QMutableListIterator<int> i(list); while (i.hasNext()) { int val = i.next(); if (val < -32768 || val > 32767) i.remove(); }
void QMutableListIterator::setValue(const T &value) const
トラバーサル関数の 1 つを使用してジャンプオーバーされた最後の項目の値をvalue で置き換えます。
トラバーサル関数は、next()、previous()、findNext()、findPrevious() です。
例:
QMutableListIterator<double> i(list); while (i.hasNext()) { double val = i.next(); i.setValue(std::sqrt(val)); }
value()、remove()、insert()も参照 。
const T &QMutableListIterator::value() const
トラバーサル関数 (next()、previous()、findNext()、findPrevious()) のいずれかを使用してジャンプオーバーした最後の項目の値を返します。
next() またはfindNext() を呼び出した後は、value() はpeekPrevious() と同じ。previous() またはfindPrevious() を呼び出した後は、value() はpeekNext() と同じ。
setValue()も参照 。
T &QMutableListIterator::value()
これはオーバーロードされた関数です。
トラバーサル関数のいずれかを使用して最後にジャンプオーバーした項目の値への nononst リファレンスを返します。
©2024 The Qt Company Ltd. 本書に含まれる文書の著作権は、それぞれの所有者に帰属します。 本書で提供されるドキュメントは、Free Software Foundation が発行したGNU Free Documentation License version 1.3に基づいてライセンスされています。 Qtおよびそれぞれのロゴは、フィンランドおよびその他の国におけるThe Qt Company Ltd.の 商標です。その他すべての商標は、それぞれの所有者に帰属します。