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 を反復処理したり、特定のキーの下に格納されている値 (キーではない) を変更したりすることができます。QMap を反復処理したい場合は、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)

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

operator==()も参照

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