const_iterator Class
class QMultiHash::const_iteratorQMultiHash::const_iterator クラスは、QMultiHash 用の STL スタイルの const イテレータを提供します。さらに...
パブリック関数
const_iterator() | |
const_iterator(const QMultiHash<Key, T>::iterator &other) | |
const Key & | key() const |
T & | value() const |
bool | operator!=(const QMultiHash<Key, T>::const_iterator &other) const |
T & | operator*() const |
QMultiHash<Key, T>::const_iterator & | operator++() |
QMultiHash<Key, T>::const_iterator | operator++(int) |
T * | operator->() const |
bool | operator==(const QMultiHash<Key, T>::const_iterator &other) const |
詳細説明
QMultiHash<Key, T>::const_iterator を使うと、QMultiHash を繰り返し処理できます。QMultiHash を繰り返し処理しながら変更したい場合は、代わりにQMultiHash::iterator を使う必要があります。イテレータを通してQMultiHash を変更する必要がない限り、constQMultiHash 以外でもQMultiHash::const_iterator を使用するのが一般的です。constイテレータの方が若干高速で、コードの可読性も向上します。
デフォルトのQMultiHash::const_iterator コンストラクタは、初期化されていないイテレータを作成します。QMultiHash::cbegin ()、QMultiHash::cend ()、QMultiHash::constFind ()のようなQMultiHash 関数を使用して初期化しなければなりません。以下は、ハッシュに格納されたすべての(キー、値)ペアを表示する典型的なループです:
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 、項目をキー順に並べるのとは異なり、QMultiHash 、項目は任意の順序で格納される。唯一の保証は、(QMultiHash を使って挿入されたため)同じキーを共有する項目は、最も最近に挿入された値から最も最近に挿入された値まで、連続して表示されるということである。
同じハッシュに対して複数のイテレータを使用することができる。しかし、QMultiHash (項目の挿入や削除) を直接変更すると、イテレータが無効になる可能性があることに注意してください。
ハッシュに項目を挿入したり、QMultiHash::reserve() や QMultiHash::squeeze() などのメソッドを呼び出したりすると、ハッシュを指すすべてのイテレータが無効になる可能性があります。イテレータは、QMultiHash が内部ハッシュテーブルを増やしたり縮めたりする必要がない限り、有効であり続けることが保証されています。再ハッシュ操作が発生した後にイテレータを使用すると、未定義の動作につながります。
長期間イテレータを保持する必要がある場合は、QMultiHash ではなくQMultiMap を使用することをお勧めします。
警告 暗黙的に共有されたコンテナ上のイテレータは、STLイテレータのようには動作しません。イテレータがコンテナ上でアクティブになっている間は、コンテナをコピーしないようにする必要があります。詳細については、暗黙の共有イテレータ問題を参照してください。
QMultiHash::iterator 、QMultiHash::key_iterator 、QMultiHash::const_key_value_iteratorも参照 。
メンバ関数ドキュメント
[constexpr noexcept]
const_iterator::const_iterator()
初期化されていないイテレータを構築します。
key()、value()、 operator++() などの関数は、初期化されていないイテレータでは呼び出してはいけません。operator=() を使用して値を代入してから使用してください。
QMultiHash::constBegin() およびQMultiHash::constEnd()も参照して ください。
[noexcept]
const_iterator::const_iterator(const QMultiHash<Key, T>::iterator &other)
other のコピーを構築します。
[noexcept]
const Key &const_iterator::key() const
現在の項目のキーを返します。
value()も参照して ください。
[noexcept]
T &const_iterator::value() const
現在の項目の値を返します。
key() およびoperator*() も参照して ください。
[noexcept]
bool const_iterator::operator!=(const QMultiHash<Key, T>::const_iterator &other) const
other がこのイテレータとは異なる項目を指している場合はtrue
を返し、そうでない場合はfalse
を返します。
operator==() も参照して ください。
[noexcept]
T &const_iterator::operator*() const
現在の項目の値を返します。
value() と同じ。
key()も参照 。
[noexcept]
QMultiHash<Key, T>::const_iterator &const_iterator::operator++()
接頭辞 ++ 演算子 (++i
) は、イテレータをハッシュ内の次の項目に進め、新しい現在の項目へのイテレータを返します。
この関数をQMultiHash::end() で呼び出すと、未定義の結果になります。
[noexcept]
QMultiHash<Key, T>::const_iterator const_iterator::operator++(int)
これはオーバーロードされた関数です。
postfix ++ 演算子 (i++
) は、イテレータをハッシュ内の次の項目に進め、それ以前の現在の項目へのイテレータを返します。
[noexcept]
T *const_iterator::operator->() const
現在の項目の値へのポインタを返します。
value()も参照 。
[noexcept]
bool const_iterator::operator==(const QMultiHash<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.の 商標です。その他すべての商標は、それぞれの所有者に帰属します。