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==()も参照 。
©2024 The Qt Company Ltd. 本文書に含まれる文書の著作権は、それぞれの所有者に帰属します。 本書で提供されるドキュメントは、Free Software Foundation が発行したGNU Free Documentation License version 1.3に基づいてライセンスされています。 Qtおよびそれぞれのロゴは、フィンランドおよびその他の国におけるThe Qt Company Ltd.の 商標です。その他すべての商標は、それぞれの所有者に帰属します。