QMultiMap::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 を反復処理し、特定のキーの下に格納されている値(キー自体は変更不可)を変更することができます。 constQMultiMap を反復処理したい場合は、QMultiMap::const_iterator を使用する必要があります。イテレータを通じてQMultiMap を変更する必要がない限り、非 constQMultiMap に対してもQMultiMap::const_iterator を使用するのが一般的なベストプラクティスです。const イテレータはわずかに高速であり、コードの可読性を向上させることができます。
デフォルトのQMultiMap::iterator コンストラクタは、初期化されていないイテレータを作成します。反復処理を開始する前に、QMultiMap::begin()、QMultiMap::end()、またはQMultiMap::find()などのQMultiMap 関数を使用して、イテレータを初期化する必要があります。以下は、マップに格納されているすべての(key, value)ペアを出力する典型的なループです:
QMultiHash が項目を任意の順序で格納するのとは異なり、QMultiMap は項目をキー順に格納します。同じキーを持つ項目は、挿入された順(新しいものから古いものへ)に連続して表示されます。
以下は、QMultiMap に格納されているすべての値を2ずつ増やす例です:
for (auto i = multimap.begin(), end = multimap.end(); i != end; ++i)
i.value() += 2;QMultiMap から要素を削除するには、erase_if(QMultiMap<Key, T> &map, Predicate pred) を使用できます:
同じマップに対して複数のイテレータを使用できます。マップに項目を追加しても、既存のイテレータは有効なままです。マップから項目を削除すると、削除された項目を指すイテレータはダングリング・イテレータになります。
警告: 暗黙的に共有されるコンテナ上のイテレータは 、STLのイテレータとまったく同じように動作するわけではありません。そのコンテナ上でイテレータがアクティブな間は、コンテナのコピーを避けるべきです。詳細については、「Implicit sharing iterator problem」を参照してください。
関連項目: QMultiMap::const_iterator 、QMultiMap::key_iterator 、およびQMultiMap::key_value_iterator 。
メンバ型のドキュメント
[alias] iterator::iterator_category
このイテレータが双方向イテレータであることを示す、std::bidirectional_iterator_tagの同義語。
メンバ関数のドキュメント
[default] 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";key() およびoperator*()も参照してください 。
T &iterator::operator*() const
現在の項目の値への、変更可能な参照を返します。
value() と同様です。
key()も参照してください 。
QMultiMap<Key, T>::iterator &iterator::operator++()
プレフィックス演算子 `++ `(++i )は、イテレータをマルチマップ内の次の項目へ進め、新しい現在の項目へのイテレータを返します。
QMultiMap::end() に対してこの関数を呼び出すと、未定義の結果となります。
operator--()も参照してください 。
QMultiMap<Key, T>::iterator iterator::operator++(int)
後置演算子 `++ ` (i++) は、イテレータをマルチマップ内の次の項目へと進め、直前の項目へのイテレータを返します。
これはオーバーロードされた関数です。
QMultiMap<Key, T>::iterator &iterator::operator--()
プレフィックス演算子 `-- ` (--i) は、その直前の要素を現在の要素とし、新しい現在の要素を指すイテレータを返します。
QMultiMap::begin() に対してこの関数を呼び出すと、未定義の結果となります。
operator++()も参照してください 。
QMultiMap<Key, T>::iterator iterator::operator--(int)
後置演算子 `-- `(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!=()も参照してください 。
© 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.