const_iterator Class
class QHash::const_iteratorQHash::const_iterator クラスは、QHash 用の STL スタイルの const イテレータを提供します。さらに...
パブリック関数
const_iterator() | |
const_iterator(const QHash<Key, T>::iterator &other) | |
const Key & | key() const |
const T & | value() const |
bool | operator!=(const QHash<Key, T>::const_iterator &other) const |
const T & | operator*() const |
QHash<Key, T>::const_iterator & | operator++() |
QHash<Key, T>::const_iterator | operator++(int) |
const T * | operator->() const |
bool | operator==(const QHash<Key, T>::const_iterator &other) const |
詳細説明
QHash<Key, T>::const_iterator を使うと、QHash を繰り返し処理できます。QHash を繰り返し処理しながら変更したい場合は、代わりにQHash::iterator を使う必要があります。イテレータを通してQHash を変更する必要がない限り、constQHash 以外でもQHash::const_iterator を使用するのが一般的です。constイテレータの方が若干高速で、コードの可読性も向上します。
デフォルトのQHash::const_iterator コンストラクタは、初期化されていないイテレータを作成します。QHash::cbegin ()、QHash::cend ()、QHash::constFind ()のようなQHash 関数を使用して初期化しなければなりません。以下は、ハッシュに格納されたすべての(キー、値)ペアを表示する典型的なループです:
QHash<QString, int> hash; hash.insert("January", 1); hash.insert("February", 2); ... hash.insert("December", 12); for (auto i = hash.cbegin(), end = hash.cend(); i != end; ++i) cout << qPrintable(i.key()) << ": " << i.value() << endl;
QMap 、項目をキー順に並べるのとは異なり、QHash 、項目は任意の順序で格納される。唯一の保証は、(QMultiHash を使って挿入されたため)同じキーを共有する項目は、最も最近に挿入された値から最も最近に挿入された値まで、連続して表示されるということである。
同じハッシュに対して複数のイテレータを使用することができる。しかし、QHash (項目の挿入や削除) を直接変更すると、イテレータが無効になる可能性があることに注意してください。
ハッシュに項目を挿入したり、QHash::reserve() やQHash::squeeze() などのメソッドを呼び出したりすると、ハッシュを指すすべてのイテレータが無効になる可能性があります。イテレータは、QHash がその内部ハッシュ・テーブルを拡大/縮小する必要がない限り、有効であり続けることが保証される。再ハッシュ操作が発生した後にイテレータを使用すると、未定義の動作につながります。
しかし、QHash::erase() メソッドを使用することで、安全にイテレータを使用してハッシュからエントリを削除することができます。この関数はイテレート中に安全にコールすることができ、ハッシュ内の項目の順序に影響を与えません。
警告 暗黙的に共有されたコンテナ上のイテレータは、STLイテレータのようには動作しません。コンテナ上でイテレータがアクティブになっている間は、コンテナをコピーしないようにする必要があります。詳細については、暗黙の共有イテレータ問題を参照してください。
QHash::iterator 、QHash::key_iterator 、QHash::const_key_value_iteratorも参照 。
メンバ関数ドキュメント
[constexpr noexcept]
const_iterator::const_iterator()
初期化されていないイテレータを構築します。
key()、value()、 operator++() などの関数は、初期化されていないイテレータでは呼び出してはいけません。operator=() を使用して値を代入してから使用してください。
QHash::constBegin() およびQHash::constEnd()も参照して ください。
[noexcept]
const_iterator::const_iterator(const QHash<Key, T>::iterator &other)
other のコピーを構築します。
[noexcept]
const Key &const_iterator::key() const
現在の項目のキーを返します。
value()も参照して ください。
[noexcept]
const T &const_iterator::value() const
現在の項目の値を返します。
key() およびoperator*() も参照して ください。
[noexcept]
bool const_iterator::operator!=(const QHash<Key, T>::const_iterator &other) const
other がこのイテレータとは異なる項目を指している場合はtrue
を返し、そうでない場合はfalse
を返します。
operator==() も参照して ください。
[noexcept]
const T &const_iterator::operator*() const
現在の項目の値を返します。
value() と同じ。
key()も参照 。
[noexcept]
QHash<Key, T>::const_iterator &const_iterator::operator++()
接頭辞 ++ 演算子 (++i
) は、イテレータをハッシュ内の次の項目に進め、新しい現在の項目へのイテレータを返します。
この関数をQHash::end() で呼び出すと、未定義の結果になります。
[noexcept]
QHash<Key, T>::const_iterator const_iterator::operator++(int)
これはオーバーロードされた関数です。
postfix ++ 演算子 (i++
) は、イテレータをハッシュ内の次の項目に進め、それ以前の現在の項目へのイテレータを返します。
[noexcept]
const T *const_iterator::operator->() const
現在の項目の値へのポインタを返します。
value()も参照 。
[noexcept]
bool const_iterator::operator==(const QHash<Key, T>::const_iterator &other) const
other がこのイテレータと同じ項目を指している場合はtrue
を返し、そうでない場合はfalse
を返します。
operator!=()も参照 。
©2024 The Qt Company Ltd. 本文書に含まれる文書の著作権は、それぞれの所有者に帰属します。 本書で提供されるドキュメントは、Free Software Foundation が発行したGNU Free Documentation License version 1.3に基づいてライセンスされています。 Qtおよびそれぞれのロゴは、フィンランドおよびその他の国におけるThe Qt Company Ltd.の 商標です。その他すべての商標は、それぞれの所有者に帰属します。