key_iterator Class
class QMap::key_iteratorQMap::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::iterator とQMap::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 を1回繰り返し、QList を一時的に作成するためにメモリを確保する必要があるため、非効率的です。
// 非効率的、keys()は高価QList<int>keys=map.keys();intnumPrimes=std::count_if(map.cbegin(),map.cend(),isPrimeNumber);qDeleteAll(map2.keys()); // 効率的、メモリ割り当て不要intnumPrimes=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!=()も参照 。
© 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.