QMap Class
template <typename Key, typename T> class QMapQMapクラスは連想配列を提供するテンプレート・クラスです。詳細...
ヘッダー | #include <QMap> |
CMake: | find_package(Qt6 REQUIRED COMPONENTS Core) target_link_libraries(mytarget PRIVATE Qt6::Core) |
qmake: | QT += core |
- 継承メンバを含む全メンバのリスト
- QMapは暗黙的に共有されるクラスの一部です。
注意:このクラスの関数はすべてリエントラントです。
パブリック型
class | const_iterator |
class | iterator |
class | key_iterator |
ConstIterator | |
Iterator | |
const_key_value_iterator | |
difference_type | |
key_type | |
key_value_iterator | |
mapped_type | |
size_type |
パブリック関数
QMap() | |
QMap(const std::map<Key, T> &other) | |
QMap(std::initializer_list<std::pair<Key, T>> list) | |
QMap(std::map<Key, T> &&other) | |
QMap(const QMap<Key, T> &other) | |
QMap(QMap<Key, T> &&other) | |
~QMap() | |
(since 6.4) auto | asKeyValueRange() && |
(since 6.4) auto | asKeyValueRange() & |
(since 6.4) auto | asKeyValueRange() const && |
(since 6.4) auto | asKeyValueRange() const & |
QMap<Key, T>::iterator | begin() |
QMap<Key, T>::const_iterator | begin() const |
QMap<Key, T>::const_iterator | cbegin() const |
QMap<Key, T>::const_iterator | cend() const |
void | clear() |
QMap<Key, T>::const_iterator | constBegin() const |
QMap<Key, T>::const_iterator | constEnd() const |
QMap<Key, T>::const_iterator | constFind(const Key &key) const |
QMap<Key, T>::const_key_value_iterator | constKeyValueBegin() const |
QMap<Key, T>::const_key_value_iterator | constKeyValueEnd() const |
bool | contains(const Key &key) const |
QMap<Key, T>::size_type | count(const Key &key) const |
QMap<Key, T>::size_type | count() const |
bool | empty() const |
QMap<Key, T>::iterator | end() |
QMap<Key, T>::const_iterator | end() const |
std::pair<QMap<Key, T>::iterator, QMap<Key, T>::iterator> | equal_range(const Key &key) |
std::pair<QMap<Key, T>::const_iterator, QMap<Key, T>::const_iterator> | equal_range(const Key &key) const |
QMap<Key, T>::iterator | erase(QMap<Key, T>::const_iterator pos) |
(since 6.0) QMap<Key, T>::iterator | erase(QMap<Key, T>::const_iterator first, QMap<Key, T>::const_iterator last) |
QMap<Key, T>::iterator | find(const Key &key) |
QMap<Key, T>::const_iterator | find(const Key &key) const |
T & | first() |
const T & | first() const |
const Key & | firstKey() const |
void | insert(QMap<Key, T> &&map) |
void | insert(const QMap<Key, T> &map) |
QMap<Key, T>::iterator | insert(const Key &key, const T &value) |
QMap<Key, T>::iterator | insert(QMap<Key, T>::const_iterator pos, const Key &key, const T &value) |
bool | isEmpty() const |
Key | key(const T &value, const Key &defaultKey = Key()) const |
QMap<Key, T>::key_iterator | keyBegin() const |
QMap<Key, T>::key_iterator | keyEnd() const |
QMap<Key, T>::key_value_iterator | keyValueBegin() |
QMap<Key, T>::const_key_value_iterator | keyValueBegin() const |
QMap<Key, T>::key_value_iterator | keyValueEnd() |
QMap<Key, T>::const_key_value_iterator | keyValueEnd() const |
QList<Key> | keys() const |
QList<Key> | keys(const T &value) const |
T & | last() |
const T & | last() const |
const Key & | lastKey() const |
QMap<Key, T>::iterator | lowerBound(const Key &key) |
QMap<Key, T>::const_iterator | lowerBound(const Key &key) const |
QMap<Key, T>::size_type | remove(const Key &key) |
(since 6.1) QMap<Key, T>::size_type | removeIf(Predicate pred) |
QMap<Key, T>::size_type | size() const |
void | swap(QMap<Key, T> &other) |
T | take(const Key &key) |
std::map<Key, T> | toStdMap() const & |
(since 6.0) std::map<Key, T> | toStdMap() && |
QMap<Key, T>::iterator | upperBound(const Key &key) |
QMap<Key, T>::const_iterator | upperBound(const Key &key) const |
T | value(const Key &key, const T &defaultValue = T()) const |
QList<T> | values() const |
QMap<Key, T> & | operator=(QMap<Key, T> &&other) |
QMap<Key, T> & | operator=(const QMap<Key, T> &other) |
T & | operator[](const Key &key) |
T | operator[](const Key &key) const |
関連する非メンバ
(since 6.1) qsizetype | erase_if(QMap<Key, T> &map, Predicate pred) |
(since 6.8) size_t | qHash(const QMap<Key, T> &key, size_t seed = 0) |
bool | operator!=(const QMap<Key, T> &lhs, const QMap<Key, T> &rhs) |
QDataStream & | operator<<(QDataStream &out, const QMap<Key, T> &map) |
bool | operator==(const QMap<Key, T> &lhs, const QMap<Key, T> &rhs) |
QDataStream & | operator>>(QDataStream &in, QMap<Key, T> &map) |
詳細説明
QMap<Key, T> は Qt の汎用コンテナクラスの一つです。キーと値のペアを格納し、キーによる高速な検索を提供します。
QMap とQHash は非常によく似た機能を提供します。違いは
- QHash はQMapよりも平均的に高速な検索を提供します。(詳細はアルゴリズム複雑度を参照)。
- QHash を反復処理する場合、項目の順序は任意である。QMapでは、項目は常にキーでソートされる。
- QHash のキー・タイプは、operator==() とグローバルなqHash(Key) 関数を提供しなければならない。QMap のキー・タイプは、総順序を指定する operator<() を提供しなければなりません。Qt 5.8.1以降では、ポインタ型をキーとして使用することも安全になりました。
以下は、QString キーとint
値を持つ QMap の例です:
キーと値の)ペアをマップに挿入するには、 operator[]() を使用します:
map["one"] = 1; map["three"] = 3; map["seven"] = 7;
これは、次の3つの(キーと値の)ペアをQMapに挿入する:("one", 1)、("three", 3)、("seven", 7)。マップに項目を挿入するもうひとつの方法は、insert ()を使うことだ:
map.insert("twelve", 12);
値を検索するには、operator[]()またはvalue()を使う:
int num1 = map["thirteen"]; int num2 = map.value("thirteen");
指定されたキーを持つ項目がマップにない場合、これらの関数はデフォルトの値を返します。
マップに特定のキーが含まれているかどうかを調べたい場合は、contains() を使用します:
int timeout = 30; if (map.contains("TIMEOUT")) timeout = map.value("TIMEOUT");
また、value ()のオーバーロードもあり、このオーバーロードは、指定されたキーを持つ項目がない場合、第2引数をデフォルト値として使用します:
int timeout = map.value("TIMEOUT", 30);
一般に、マップ内のキーを検索するには、operator[]() ではなく、contains() やvalue() を使用することを推奨します。なぜなら、operator[]() は、同じキーを持つ項目が存在しない場合、(マップが const でない限り)黙って項目をマップに挿入してしまうからです。例えば、以下のコード・スニペットはメモリ上に1000個のアイテムを作成します:
// WRONG QMap<int, QWidget *> map; ... for (int i = 0; i < 1000; ++i) { if (map[i] == okButton) cout << "Found button at index " << i << endl; }
この問題を避けるには、上のコードでmap[i]
をmap.value(i)
に置き換えてください。
QMapに格納されているすべての(キーと値の)ペアをナビゲートしたい場合は、イテレータを使用します。QMapには、Javaスタイルのイテレータ(QMapIterator とQMutableMapIterator )と、STLスタイルのイテレータ(QMap::const_iterator とQMap::iterator )が用意されています。以下は、Javaスタイルのイテレータを使用してQMap<QString, int>を反復処理する方法です:
QMapIterator<QString, int> i(map); while (i.hasNext()) { i.next(); cout << qPrintable(i.key()) << ": " << i.value() << endl; }
以下は同じコードだが、今回はSTLスタイルのイテレータを使っている:
for (auto i = map.cbegin(), end = map.cend(); i != end; ++i) cout << qPrintable(i.key()) << ": " << i.value() << endl;
項目はキーの昇順で走査される。
QMapでは、1つのキーに1つの値しか入れられません。QMapにすでに存在するキーでinsert ()を呼び出すと、前の値は消去されます。たとえば、次のようになります:
map.insert("plenty", 100); map.insert("plenty", 2000); // map.value("plenty") == 2000
ただし、QMultiMap を使用すれば、1 つのキーに複数の値を格納できます。
マップから(キーではなく)値のみを抽出する必要がある場合は、範囲ベースの for を使用することもできます:
マップから項目を削除するには、いくつかの方法があります。ひとつは、remove() を呼び出す方法です。これは、指定されたキーを持つ項目をすべて削除します。もうひとつの方法は、QMutableMapIterator::remove ()を使うことである。さらに、clear() を使用すると、マップ全体をクリアできます。
QMapのキーと値のデータ型は、割り当て可能なデータ型でなければなりません。これは、遭遇する可能性の高いほとんどのデータ型をカバーするものですが、コンパイラーは、例えば、QWidget を値として格納することを許可しません。代わりに、QWidget *を格納します。さらに、QMapのキー型はoperator<()を提供しなければなりません。QMapはこれを使用して項目のソートを維持し、x < y
とy < x
のどちらも真でない場合、2つのキーx
とy
は等価であると見なします。
例
#ifndef EMPLOYEE_H #define EMPLOYEE_H class Employee { public: Employee() {} Employee(const QString &name, QDate dateOfBirth); ... private: QString myName; QDate myDateOfBirth; }; inline bool operator<(const Employee &e1, const Employee &e2) { if (e1.name() != e2.name()) return e1.name() < e2.name(); return e1.dateOfBirth() < e2.dateOfBirth(); } #endif // EMPLOYEE_H
この例では、まず従業員の名前を比較する。もし同じなら、生年月日を比較し、同数であることを確認する。
QMapIterator 、QMutableMapIterator 、QHash 、QSetも参照のこと 。
メンバ型ドキュメント
QMap::ConstIterator
Qt-style synonym forQMap::const_iterator.
QMap::Iterator
Qt-style synonym forQMap::iterator.
QMap::const_key_value_iterator
QMap::const_key_value_iterator typedef は、QMap に対する STL スタイルのイテレータを提供する。
QMap::const_key_value_iterator はQMap::const_iterator と本質的に同じですが、 operator*() が値の代わりにキーと値のペアを返す点が異なります。
QKeyValueIteratorも参照してください 。
[alias]
QMap::difference_type
ptrdiff_tの型定義。STL との互換性のために提供される。
[alias]
QMap::key_type
Keyの型定義。STL との互換性のために提供される。
QMap::key_value_iterator
QMap::key_value_iterator typedef は、QMap に対する STL スタイルのイテレータを提供する。
QMap::key_value_iterator はQMap::iterator と本質的に同じですが、 operator*() が値の代わりにキーと値のペアを返す点が異なります。
QKeyValueIteratorも参照してください 。
[alias]
QMap::mapped_type
STL との互換性のために提供される。
[alias]
QMap::size_type
int の型定義。STL との互換性のために提供される。
メンバ関数ドキュメント
[since 6.4]
auto QMap::asKeyValueRange() &
[since 6.4]
auto QMap::asKeyValueRange() &&
[since 6.4]
auto QMap::asKeyValueRange() const &
[since 6.4]
auto QMap::asKeyValueRange() const &&
このマップをキーと値のペアで反復処理できる範囲オブジェクトを返します。例えば、この範囲オブジェクトは、構造化バインディング宣言と組み合わせて、範囲ベースのforループで使用することができます:
QMap<QString, int> map; map.insert("January", 1); map.insert("February", 2); // ... map.insert("December", 12); for (auto [key, value] : map.asKeyValueRange()) { cout << qPrintable(key) << ": " << value << endl; --value; // convert to JS month indexing }
このようにして得られるキーと値は、どちらもマップ内のものへの参照であることに注意してください。具体的には、値を変更するとマップ自体が変更されます。
この関数はQt 6.4で導入されました。
QKeyValueIteratorも参照して ください。
QMap::QMap()
空のマップを構築します。
clear()も参照してください 。
[explicit]
QMap::QMap(const std::map<Key, T> &other)
other のコピーを構築する。
toStdMap()も参照 。
QMap::QMap(std::initializer_list<std::pair<Key, T>> list)
イニシャライザーリストlist の各要素のコピーでマップを構築する。
[explicit]
QMap::QMap(std::map<Key, T> &&other)
other から移動してマップを構築する。
toStdMap()も参照のこと 。
[default]
QMap::QMap(const QMap<Key, T> &other)
other のコピーを構築する。
QMapは暗黙的に共有されるため、この操作は一定時間で行われる。これにより、関数からQMapを返すのが非常に高速になる。共有インスタンスが変更された場合、そのインスタンスはコピーされ(copy-on-write)、これには線形時間がかかります。
operator=も参照してください 。
[default]
QMap::QMap(QMap<Key, T> &&other)
Move-QMapインスタンスを構築する。
[default]
QMap::~QMap()
マップを破棄する。マップ内の値への参照と、このマップに対するすべてのイテレータは無効になります。
QMap<Key, T>::iterator QMap::begin()
マップの最初の項目を指すSTL 形式のイテレータを返します。
constBegin() およびend()も参照 。
QMap<Key, T>::const_iterator QMap::begin() const
これはオーバーロードされた関数である。
QMap<Key, T>::const_iterator QMap::cbegin() const
マップの最初の項目を指すSTL 形式のイテレータを返します。
QMap<Key, T>::const_iterator QMap::cend() const
マップの最後のアイテムの後の架空のアイテムを指すSTL 形式のイテレータを返します。
void QMap::clear()
マップからすべてのアイテムを削除する。
remove()も参照してください 。
QMap<Key, T>::const_iterator QMap::constBegin() const
マップの最初の項目を指すSTL 形式のイテレータを返します。
begin() およびconstEnd()も参照してください 。
QMap<Key, T>::const_iterator QMap::constEnd() const
マップの最後のアイテムの後の架空のアイテムを指すSTL 形式のイテレータを返します。
constBegin() およびend()も参照 。
QMap<Key, T>::const_iterator QMap::constFind(const Key &key) const
マップ内のキーkey を持つ項目を指す const イテレータを返す。
マップにキーkey を持つ項目がない場合、この関数はconstEnd() を返す。
find()も参照してください 。
QMap<Key, T>::const_key_value_iterator QMap::constKeyValueBegin() const
マップの最初のエントリを指すSTL 形式のイテレータを返します。
keyValueBegin()も参照ください 。
QMap<Key, T>::const_key_value_iterator QMap::constKeyValueEnd() const
マップの最後のエントリの後の虚数エントリを指すSTL 形式のイテレータを返します。
constKeyValueBegin()も参照ください 。
bool QMap::contains(const Key &key) const
マップにキーkey を持つアイテムが含まれていればtrue
を返し、そうでなければfalse
を返す。
count()も参照のこと 。
QMap<Key, T>::size_type QMap::count(const Key &key) const
キーkey に関連付けられた項目の数を返す。
contains()も参照 。
QMap<Key, T>::size_type QMap::count() const
これはオーバーロードされた関数である。
size() と同じ。
bool QMap::empty() const
この関数は STL との互換性のために用意されている。これはisEmpty() と等価であり、マップが空であれば真を返し、そうでなければ偽を返す。
QMap<Key, T>::iterator QMap::end()
マップの最後のアイテムの後の架空のアイテムを指すSTL 形式のイテレータを返します。
QMap<Key, T>::const_iterator QMap::end() const
これはオーバーロードされた関数である。
std::pair<QMap<Key, T>::iterator, QMap<Key, T>::iterator> QMap::equal_range(const Key &key)
key の下に格納されている値[first, second)
の範囲を区切るイテレータのペアを返す。
std::pair<QMap<Key, T>::const_iterator, QMap<Key, T>::const_iterator> QMap::equal_range(const Key &key) const
これはオーバーロードされた関数である。
QMap<Key, T>::iterator QMap::erase(QMap<Key, T>::const_iterator pos)
イテレータpos が指す (key, value) ペアをマップから削除し、マップの次の項目へのイテレータを返します。
注意: イテレータpos は有効で、再参照可能でなければなりません。
remove()も参照 。
[since 6.0]
QMap<Key, T>::iterator QMap::erase(QMap<Key, T>::const_iterator first, QMap<Key, T>::const_iterator last)
イテレータ範囲 [first,last) が指す (key, value) ペアをマップから削除します。最後に削除された要素に続くマップ内の項目へのイテレータを返します。
注意: 範囲[first, last)
は、*this
で有効な範囲でなければなりません。
この関数は Qt 6.0 で導入されました。
remove()も参照してください 。
QMap<Key, T>::iterator QMap::find(const Key &key)
マップ内のキーkey を持つ項目を指すイテレータを返す。
マップにキーkey を持つ項目がない場合、この関数はend() を返す。
constFind()、value()、values()、lowerBound()、upperBound()も参照 。
QMap<Key, T>::const_iterator QMap::find(const Key &key) const
これはオーバーロードされた関数である。
T &QMap::first()
マップ内の最初の値、つまり最小のキーにマップされた値への参照を返す。この関数は、マップが空でないことを前提としている。
非共有(またはconstバージョンが呼び出される)の場合、これは定数時間で実行される。
last()、firstKey()、isEmpty()も参照 。
const T &QMap::first() const
これはオーバーロードされた関数である。
const Key &QMap::firstKey() const
マップ内の最小のキーへの参照を返す。この関数は、マップが空でないことを前提とする。
この関数は定数時間で実行される。
lastKey()、first()、keyBegin()、isEmpty()も参照 。
void QMap::insert(QMap<Key, T> &&map)
map のすべてのアイテムをこのマップに移動する。
キーが両方のマップに共通の場合、その値はmap に格納されている値に置き換えられます。
map が共有されている場合は、代わりに項目がコピーされます。
void QMap::insert(const QMap<Key, T> &map)
map のすべての項目をこのマップに挿入する。
キーが両方のマップに共通する場合、その値はmap に格納されている値に置き換えられます。
QMap<Key, T>::iterator QMap::insert(const Key &key, const T &value)
キーがkey で値がvalue の新しい項目を挿入します。
すでにキーkey を持つ項目がある場合、その項目の値はvalue に置き換えられます。
新しい/更新された要素を指すイテレータを返します。
QMap<Key, T>::iterator QMap::insert(QMap<Key, T>::const_iterator pos, const Key &key, const T &value)
これはオーバーロードされた関数である。
キーがkey で値がvalue の新しいアイテムを挿入し、ヒントはpos で、どこに挿入するかを示唆します。
ヒントとしてconstBegin() が使われた場合、key がマップのどのキーよりも小さいことを示し、constEnd() が使われた場合、key がマップのどのキーよりも(厳密には)大きいことを示す。そうでない場合、ヒントは(pos - 1).key() <key <= pos.key()という条件を満たさなければならない。ヒントpos が間違っている場合、それは無視され、通常の挿入が行われる。
キーkey を持つアイテムがすでに存在する場合、そのアイテムの値はvalue に置き換えられる。
ヒントが正しく、マップが非共有であれば、挿入は償却された定数時間で実行される。
constEndソートされたデータからマップを作成する場合、constBegin()を使用して最大 のキーを最初に挿入する方が、constEnd()を使用してソート順に挿入する よりも高速である。
注意:ヒントの取り扱いには注意してください。古い共有インスタンスからのイテレータを提供するとクラッシュする可能性がありますが、マップとpos マップの両方が無言で破損する危険性もあります。
新しい/更新された要素を指すイテレータを返します。
bool QMap::isEmpty() const
マップに項目がない場合はtrue
を返し、そうでない場合は false を返す。
size()も参照してください 。
Key QMap::key(const T &value, const Key &defaultKey = Key()) const
これはオーバーロードされた関数である。
値value を持つ最初のキー、またはマップに値value を持つ項目がない場合はdefaultKey を返します。defaultKey が指定されていない場合、この関数はデフォルトで構成されたキーを返します。
QMap の内部データ構造は、値ではなくキーによる高速検索に最適化されているため、この関数は遅い(線形時間)場合がある。
QMap<Key, T>::key_iterator QMap::keyBegin() const
マップの最初のキーを指すSTL 形式のイテレータを返します。
keyEnd() およびfirstKey()も参照ください 。
QMap<Key, T>::key_iterator QMap::keyEnd() const
マップの最後のキーの後の架空の項目を指す、STL 形式のイテレータを返します。
keyBegin() およびlastKey()も参照してください 。
QMap<Key, T>::key_value_iterator QMap::keyValueBegin()
マップの最初のエントリを指すSTL 形式のイテレータを返します。
keyValueEnd()も参照ください 。
QMap<Key, T>::const_key_value_iterator QMap::keyValueBegin() const
マップの最初のエントリを指すSTL 形式のイテレータを返します。
keyValueEnd()も参照ください 。
QMap<Key, T>::key_value_iterator QMap::keyValueEnd()
マップの最後のエントリの後の架空のエントリを指すSTL 形式のイテレータを返します。
keyValueBegin()も参照ください 。
QMap<Key, T>::const_key_value_iterator QMap::keyValueEnd() const
マップの最後のエントリの後の虚数エントリを指すSTL 形式のイテレータを返します。
keyValueBegin()も参照ください 。
QList<Key> QMap::keys() const
マップ内のすべてのキーを昇順で含むリストを返す。
この順序は、values() で使用される順序と同じであることが保証される。
この関数は、線形時間で新しいリストを作成します。keyBegin() からkeyEnd() を繰り返し実行することで、時間とメモリの浪費を避けることができる。
QList<Key> QMap::keys(const T &value) const
これはオーバーロードされた関数である。
値value に関連付けられたすべてのキーを昇順に含むリストを返す。
QMap の内部データ構造は、値ではなくキーによる高速検索に最適化されているため、この関数は遅い(線形時間)ことがあります。
T &QMap::last()
マップ内の最後の値、つまり最大のキーにマップされた値への参照を返す。この関数は、マップが空でないことを前提とする。
非共有(または const バージョンが呼び出された)場合、これは対数時間で実行される。
first()、lastKey()、isEmpty()も参照のこと 。
const T &QMap::last() const
これはオーバーロードされた関数である。
const Key &QMap::lastKey() const
マップ内の最大のキーへの参照を返す。この関数は、マップが空でないことを前提とする。
この関数は対数時間で実行される。
firstKey()、last()、keyEnd()、isEmpty()も参照 。
QMap<Key, T>::iterator QMap::lowerBound(const Key &key)
マップ内のキーkey を持つ最初の項目を指すイテレータを返す。マップにキーkey を持つ項目がない場合、この関数は、より大きなキーを持つ最も近い項目を指すイテレータを返します。
upperBound() およびfind()も参照 。
QMap<Key, T>::const_iterator QMap::lowerBound(const Key &key) const
これはオーバーロードされた関数である。
QMap<Key, T>::size_type QMap::remove(const Key &key)
キーkey を持つすべてのアイテムをマップから削除します。そのキーがマップに存在する場合は 1、そうでない場合は 0 となります。
[since 6.1]
template <typename Predicate> QMap<Key, T>::size_type QMap::removeIf(Predicate pred)
述語pred が真を返すすべての要素をマップから削除する。
この関数は、QMap<Key, T>::iterator
型の引数か、std::pair<const Key &, T &>
型の引数を取る述語をサポートします。
もしあれば、削除された要素の数を返します。
この関数はQt 6.1で導入されました。
QMap<Key, T>::size_type QMap::size() const
マップ内の (key, value) ペアの数を返します。
[noexcept]
void QMap::swap(QMap<Key, T> &other)
このマップをother と入れ替える。この操作は非常に速く、失敗することはない。
T QMap::take(const Key &key)
キーkey を持つ項目をマップから削除し、それに関連付けられた値を返します。
その項目がマップに存在しない場合、この関数は単にデフォルトで構成された値を返します。
戻り値を使用しない場合は、remove() の方が効率的です。
remove()も参照 。
std::map<Key, T> QMap::toStdMap() const &
このQMap と等価な STL マップを返します。
[since 6.0]
std::map<Key, T> QMap::toStdMap() &&
これはオーバーロードされた関数である。
注意: この関数を呼び出すと、QMap は部分的に形成された状態になります。この状態では、有効な操作は破棄か新しい値の代入のみです。
この関数は Qt 6.0 で導入されました。
QMap<Key, T>::iterator QMap::upperBound(const Key &key)
マップ内の最後のキーkey を持つアイテムの直後を指すイテレータを返す。マップにキーkey を持つ項目がない場合、この関数は、より大きなキーを持つ最も近い項目を指すイテレータを返します。
例
QMap<int, QString> map; map.insert(1, "one"); map.insert(5, "five"); map.insert(10, "ten"); map.upperBound(0); // returns iterator to (1, "one") map.upperBound(1); // returns iterator to (5, "five") map.upperBound(2); // returns iterator to (5, "five") map.upperBound(10); // returns end() map.upperBound(999); // returns end()
lowerBound() およびfind()も参照 。
QMap<Key, T>::const_iterator QMap::upperBound(const Key &key) const
これはオーバーロードされた関数である。
T QMap::value(const Key &key, const T &defaultValue = T()) const
キーkey に関連付けられた値を返す。
マップにキーkey を持つ項目がない場合、この関数はdefaultValue を返します。defaultValue が指定されていない場合、この関数はデフォルトで構成された値を返します。
key()、values()、contains() およびoperator[]()も参照してください 。
QList<T> QMap::values() const
マップ内のすべての値をキーの昇順で含むリストを返す。
この関数は、線形時間で新しいリストを作成する。keyValueBegin() からkeyValueEnd() を繰り返し実行することで、時間とメモリの浪費を避けることができる。
[default]
QMap<Key, T> &QMap::operator=(QMap<Key, T> &&other)
Move-other をこのQMap インスタンスに割り当てる。
[default]
QMap<Key, T> &QMap::operator=(const QMap<Key, T> &other)
このマップにother を割り当て、このマップへの参照を返す。
T &QMap::operator[](const Key &key)
キーkey に関連付けられた値を、変更可能な参照として返す。
マップにキーkey を持つ項目がない場合、この関数はデフォルトで構成された値をキーkey を持つマップに挿入し、その参照を返します。
T QMap::operator[](const Key &key) const
これはオーバーロードされた関数である。
value() と同じ。
関連する非会員
[since 6.1]
template <typename Key, typename T, typename Predicate> qsizetype erase_if(QMap<Key, T> &map, Predicate pred)
マップmap から、述語pred が真を返すすべての要素を削除する。
この関数は、QMap<Key, T>::iterator
型の引数か、std::pair<const Key &, T &>
型の引数を取る述語をサポートします。
もしあれば、削除された要素の数を返します。
この関数はQt 6.1で導入されました。
[since 6.8]
size_t qHash(const QMap<Key, T> &key, size_t seed = 0)
seed を計算の種として、key のハッシュ値を返す。
Key
、T
の型は qHash() でサポートされている必要があります。
この関数は Qt 6.8 で導入されました。
bool operator!=(const QMap<Key, T> &lhs, const QMap<Key, T> &rhs)
lhs がrhs と等しくない場合はtrue
を返し、そうでない場合は false を返す。
2つのマップが同じ(キー、値)ペアを含む場合、等しいとみなされる。
この関数は、operator==()
を実装するために、キーと値の型を必要とします。
operator==()も参照 。
template <typename Key, typename T> QDataStream &operator<<(QDataStream &out, const QMap<Key, T> &map)
マップmap をストリームout に書き込む。
この関数は、キーと値の型がoperator<<()
を実装している必要があります。
QDataStream 演算子のフォーマットも参照してください 。
bool operator==(const QMap<Key, T> &lhs, const QMap<Key, T> &rhs)
lhs がrhs と等しければtrue
を返し、そうでなければ false を返す。
2つのマップが同じ(キー、値)ペアを含む場合、等しいとみなされる。
この関数は、operator==()
を実装するためにキーと値の型を必要とします。
operator!=()も参照 。
template <typename Key, typename T> QDataStream &operator>>(QDataStream &in, QMap<Key, T> &map)
ストリームin からマップをmap に読み込む。
この関数は、operator>>()
を実装するために、キーと値の型を必要とします。
QDataStream 演算子のフォーマットも参照してください 。
© 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.