key_iterator Class

class QMap::key_iterator

QMap::key_iterator クラスは、QMap キー用の STL スタイルの const イテレータを提供します。さらに...

パブリック関数

QMap<Key, T>::const_iterator base() const
bool operator!=(QMap<Key, T>::key_iterator other) const
const Key &operator*() const
QMap<Key, T>::key_iterator &operator++()
QMap<Key, T>::key_iterator operator++(int)
QMap<Key, T>::key_iterator &operator--()
QMap<Key, T>::key_iterator operator--(int)
const Key *operator->() const
bool operator==(QMap<Key, T>::key_iterator other) const

詳細説明

QMap::key_iterator は基本的に と同じですが、 operator*() と operator->() が値の代わりにキーを返す点が異なります。QMap::const_iterator

ほとんどの用途では、QMap::iteratorQMap::const_iterator を使用する必要があります。QMap::iterator::key() を呼び出すことで、簡単にキーにアクセスできます:

for (QMap<int, QString>::const_iterator it = map.cbegin(), end = map.cend(); it != end; ++it) {
    cout << "The key: " << it.key() << endl;
    cout << "The value: " << qPrintable(it.value()) << endl;
    cout << "Also the value: " << qPrintable(*it) << endl;
}

しかし、QMap のキーとSTLスタイルのアルゴリズムとの相互運用性を確保するためには、値の代わりにキーを参照解除するイテレータが必要です。QMap::key_iterator を使用すれば、QMap::keys() を呼び出すことなく、キーの範囲にアルゴリズムを適用することができます。QMap の繰り返しと、一時的なQList を作成するためのメモリ割り当てが1回かかるので、非効率的です。

// Inefficient, keys() is expensive
QList<int> keys = map.keys();
int numPrimes = std::count_if(map.cbegin(), map.cend(), isPrimeNumber);
qDeleteAll(map2.keys());

// Efficient, no memory allocation needed
int numPrimes = std::count_if(map.keyBegin(), map.keyEnd(), isPrimeNumber);
qDeleteAll(map2.keyBegin(), map2.keyEnd());

QMap::key_iterator がconstの場合、キーを変更することはできない。

デフォルトのQMap::key_iterator コンストラクタは、初期化されていないイテレータを作成します。QMap::keyBegin() やQMap::keyEnd() のようなQMap 関数を使用して初期化する必要があります。

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

QMap::const_iterator およびQMap::iteratorも参照して ください。

メンバ関数ドキュメント

QMap<Key, T>::const_iterator key_iterator::base() const

このイテレータkey_iterator が基づいているconst_iterator を返します。

bool key_iterator::operator!=(QMap<Key, T>::key_iterator other) const

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

operator==()も参照

const Key &key_iterator::operator*() const

現在の項目のキーを返します。

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

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

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

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

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

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

postfix++ 演算子 (i++) は、イテレータをハッシュの次の項目に進め、前の項目へのイテレータを返す。

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

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

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

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

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

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

postfix-- 演算子 (i--) は、直前の項目を現在の項目にし、直前の項目を指すイテレータを返す。

const Key *key_iterator::operator->() const

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

bool key_iterator::operator==(QMap<Key, T>::key_iterator other) const

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

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

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