key_iterator Class

class QMultiMap::key_iterator

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

パブリック関数

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

詳細説明

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

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

for (auto it = multimap.cbegin(), end = multimap.cend(); it != end; ++it) {
    cout << "The key: " << it.key() << endl
    cout << "The value: " << qPrintable(it.value()) << endl;
    cout << "Also the value: " << qPrintable(*it) << endl;
}

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

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

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

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

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

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

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

メンバ関数ドキュメント

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

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

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

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

operator==()も参照

const Key &key_iterator::operator*() const

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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