iterator Class
class QMultiMap::iteratorQMultiMap::iterator クラスは、QMultiMap 用の STL スタイルの非 const イテレータを提供します。詳細...
パブリック型
パブリック関数
iterator() | |
const Key & | key() const |
T & | value() const |
T & | operator*() const |
QMultiMap<Key, T>::iterator & | operator++() |
QMultiMap<Key, T>::iterator | operator++(int) |
QMultiMap<Key, T>::iterator & | operator--() |
QMultiMap<Key, T>::iterator | operator--(int) |
T * | operator->() const |
関連する非メンバー
bool | operator!=(const QMultiMap<Key, T>::iterator &lhs, const QMultiMap<Key, T>::iterator &rhs) |
bool | operator==(const QMultiMap<Key, T>::iterator &lhs, const QMultiMap<Key, T>::iterator &rhs) |
詳しい説明
QMultiMap<Key, T>::iterator は、QMultiMap を繰り返し処理し、特定のキーの下に格納されている値 (キーではない) を変更することができます。QMultiMap を反復処理したい場合は、QMultiMap::const_iterator を使用する必要があります。イテレータを使用してQMultiMap を変更する必要がない限り、constQMultiMap 以外にQMultiMap::const_iterator を使用するのが一般的です。const イテレータのほうが若干高速で、コードの可読性も向上します。
デフォルトのQMultiMap::iterator コンストラクタは、初期化されていないイテレータを作成します。QMultiMap::begin ()、QMultiMap::end ()、QMultiMap::find ()のようなQMultiMap 関数を使用して初期化しなければなりません。以下は、マップに格納されたすべての(キー、値)ペアを表示する典型的なループです:
QMultiHash 、項目を任意の順序で格納するのとは異なり、QMultiMap 、項目をキー順に格納する。同じキーを共有する項目は、最近挿入された値から最近挿入されなかった値まで、連続して表示されます。
以下は、QMultiMap に格納されているすべての値を2ずつ増やす例である:
for (auto it = multimap.begin(), end = multimap.end(); i != end; ++i) i.value() += 2;
QMultiMap から要素を削除するには、erase_if(QMultiMap<Key, T> &map, Predicate pred)を使います:
同じマップに複数のイテレータを使うことができます。マップにアイテムを追加しても、既存のイテレータは有効です。マップから項目を削除すると、削除された項目を指すイテレータは、ぶら下がったイテレータになります。
警告 暗黙的に共有されたコンテナ上のイテレータは、STLイテレータのようには動作しません。そのコンテナ上でイテレータがアクティブになっている間は、コンテナのコピーを避けるべきです。詳細については、暗黙的共有イテレータ問題を参照してください。
QMultiMap::const_iterator 、QMultiMap::key_iterator 、QMultiMap::key_value_iteratorも参照のこと 。
メンバ型ドキュメント
[alias]
iterator::iterator_category
このイテレータが双方向イテレータであることを示すstd::bidirectional_iterator_tagのシノニム。
メンバ関数ドキュメント
iterator::iterator()
初期化されていないイテレータを構築します。
key()、value()、 operator++() などの関数を、初期化されていないイテレータで呼び出してはいけません。operator=() を使用して値を代入してから使用してください。
QMultiMap::begin() およびQMultiMap::end()も参照してください 。
const Key &iterator::key() const
現在のアイテムのキーを const リファレンスとして返します。
イテレータを通してアイテムのキーを変更する直接的な方法はありませんが、QMultiMap::erase() の後に QMultiMap::insert() を呼び出すことで可能です。
value()も参照してください 。
T &iterator::value() const
現在の項目の値への変更可能な参照を返します。
例えば、代入の左辺で value() を使用することで、項目の値を変更することができます:
if (i.key() == "Hello") i.value() = "Bonjour";
T &iterator::operator*() const
現在の項目の値への変更可能な参照を返します。
value() と同じ。
key()も参照 。
QMultiMap<Key, T>::iterator &iterator::operator++()
前置演算子++
(++i
) は、イテレータをマルチマップの次の項目に進め、新しい現在の項目へのイテレータを返す。
この関数をQMultiMap::end() で呼び出すと、未定義の結果になります。
operator--()も参照 。
QMultiMap<Key, T>::iterator iterator::operator++(int)
これはオーバーロードされた関数である。
postfix++
演算子 (i++
) は、イテレータをマルチマップの次の項目に進め、それ以前の現在の項目へのイテレータを返します。
QMultiMap<Key, T>::iterator &iterator::operator--()
前置演算子--
(--i
) は、直前の項目をカレントにし、新しいカレント項目を指すイテレータを返す。
この関数をQMultiMap::begin() で呼び出すと、未定義の結果になります。
operator++()も参照してください 。
QMultiMap<Key, T>::iterator iterator::operator--(int)
これはオーバーロードされた関数である。
postfix--
演算子(i--
)は、直前の項目をカレントとし、直前の項目を指すイテレータを返します。
T *iterator::operator->() const
現在の項目の値へのポインタを返します。
value()も参照 。
関連する非会員
bool operator==(const QMultiMap<Key, T>::iterator &lhs, const QMultiMap<Key, T>::iterator &rhs)
lhs がrhs イテレータと同じ項目を指している場合はtrue
を返し、そうでない場合はfalse
を返す。
operator!=()も参照のこと 。
bool operator!=(const QMultiMap<Key, T>::iterator &lhs, const QMultiMap<Key, T>::iterator &rhs)
lhs がイテレータrhs と異なる項目を指している場合はtrue
を返し、そうでない場合はfalse
を返す。
operator==()も参照 。
© 2025 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.