key_iterator Class

class QMultiHash::key_iterator

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

パブリック関数

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

詳細説明

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

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

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

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

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

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

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

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

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

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

メンバ関数ドキュメント

[noexcept] QMultiHash<Key, T>::const_iterator key_iterator::base() const

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

[noexcept] bool key_iterator::operator!=(QMultiHash<Key, T>::key_iterator other) const

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

operator==()も参照

[noexcept] const Key &key_iterator::operator*() const

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

[noexcept] QMultiHash<Key, T>::key_iterator &key_iterator::operator++()

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

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

[noexcept] QMultiHash<Key, T>::key_iterator key_iterator::operator++(int)

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

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

[noexcept] const Key *key_iterator::operator->() const

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

[noexcept] bool key_iterator::operator==(QMultiHash<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.の 商標です。その他すべての商標は、それぞれの所有者に帰属します。