iterator Class

class QMap::iterator

QMap::iterator クラスは、QMap 用の STL スタイルの非 const イテレータを提供します。詳細...

パブリック型

パブリック関数

iterator()
const Key &key() const
T &value() const
T &operator*() const
QMap<Key, T>::iterator &operator++()
QMap<Key, T>::iterator operator++(int)
QMap<Key, T>::iterator &operator--()
QMap<Key, T>::iterator operator--(int)
T *operator->() const
bool operator!=(const QMap<Key, T>::iterator &lhs, const QMap<Key, T>::iterator &rhs)
bool operator==(const QMap<Key, T>::iterator &lhs, const QMap<Key, T>::iterator &rhs)

詳しい説明

QMap<Key, T>::iterator は、QMap を繰り返し処理し、特定のキーの下に格納されている値 (キーではない) を変更することができます。constQMap を反復処理したい場合は、QMap::const_iterator を使用する必要があります。イテレータを使用してQMap を変更する必要がない限り、constQMap 以外にQMap::const_iterator を使用するのが一般的です。const イテレータのほうが若干高速で、コードの可読性も向上します。

デフォルトのQMap::iterator コンストラクタは、初期化されていないイテレータを作成します。QMap::begin ()、QMap::end ()、QMap::find ()のようなQMap 関数を使用して初期化しなければなりません。以下は、マップに格納されたすべての(キー、値)ペアを表示する典型的なループです:

QMap<QString, int> map;
map.insert("January", 1);
map.insert("February", 2);
...
map.insert("December", 12);

for (auto i = map.cbegin(), end = map.cend(); i != end; ++i)
    cout << qPrintable(i.key()) << ": " << i.value() << endl;

QHash 、項目を任意の順序で格納するのとは異なり、QMap 、項目をキー順に格納する。

以下は、QMap に格納されているすべての値を2ずつ増やす例である:

for (auto i = map.begin(), end = map.end(); i != end; ++i)
    i.value() += 2;

QMap から要素を削除するには、erase_if(QMap<Key, T> &map, Predicate pred)を使います:

erase_if(map, [](const QMap<QString, int>::iterator it) { return it.value() > 10; });

同じマップに複数のイテレータを使うことができます。マップにアイテムを追加しても、既存のイテレータは有効です。マップから項目を削除すると、削除された項目を指すイテレータは、ぶら下がったイテレータになります。

警告 暗黙的に共有されたコンテナ上のイテレータは、STLイテレータのようには動作しません。そのコンテナ上でイテレータがアクティブになっている間は、コンテナのコピーを避けるべきです。詳細については、暗黙的共有イテレータ問題を参照してください。

QMap::const_iteratorQMap::key_iteratorQMap::key_value_iteratorも参照のこと

メンバ型ドキュメント

[alias] iterator::iterator_category

このイテレータが双方向イテレータであることを示すstd::bidirectional_iterator_tagのシノニム。

メンバ関数ドキュメント

iterator::iterator()

初期化されていないイテレータを構築します。

key()、value()、 operator++() などの関数を、初期化されていないイテレータで呼び出してはいけません。operator=() を使用して値を代入してから使用してください。

QMap::begin() およびQMap::end()も参照してください

const Key &iterator::key() const

現在のアイテムのキーを const リファレンスとして返します。

アイテムのキーをイテレータで直接変更する方法はありませんが、QMap::erase() の後にQMap::insert() を呼び出すことで変更できます。

value()も参照

T &iterator::value() const

現在の項目の値への変更可能な参照を返します。

例えば、代入の左辺で value() を使用することで、項目の値を変更することができます:

if (i.key() == "Hello")
    i.value() = "Bonjour";

key() およびoperator*()も参照

T &iterator::operator*() const

現在の項目の値への変更可能な参照を返します。

value() と同じ。

key()も参照

QMap<Key, T>::iterator &iterator::operator++()

前置演算子++ (++i) は、イテレータをマップの次の項目に進め、新しい現在の項目へのイテレータを返す。

この関数をQMap::end() で呼び出すと、未定義の結果になります。

operator--()も参照

QMap<Key, T>::iterator iterator::operator++(int)

これはオーバーロードされた関数である。

postfix++ 演算子(i++)は、イテレータをマップの次の項目に進め、それ以前の現在の項目へのイテレータを返します。

QMap<Key, T>::iterator &iterator::operator--()

前置演算子-- (--i) は、直前の項目をカレントにし、新しいカレント項目を指すイテレータを返す。

この関数をQMap::begin() で呼び出すと、未定義の結果になります。

operator++()も参照してください

QMap<Key, T>::iterator iterator::operator--(int)

これはオーバーロードされた関数である。

postfix-- 演算子(i--)は、直前の項目をカレントとし、直前の項目を指すイテレータを返します。

T *iterator::operator->() const

現在の項目の値へのポインタを返します。

value()も参照

関連する非会員

bool operator==(const QMap<Key, T>::iterator &lhs, const QMap<Key, T>::iterator &rhs)

lhsrhs イテレータと同じ項目を指している場合はtrue を返し、そうでない場合はfalse を返す。

operator!=()も参照のこと

bool operator!=(const QMap<Key, T>::iterator &lhs, const QMap<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.