このページでは

QMap Class

template <typename Key, typename T> class QMap

QMap クラスは、連想配列を提供するテンプレートクラスです。詳細...

ヘッダー: #include <QMap>
CMake: find_package(Qt6 REQUIRED COMPONENTS Core)
target_link_libraries(mytarget PRIVATE Qt6::Core)
qmake: QT += core

注:このクラスのすべての関数は再入可能です。

QMap の比較

カテゴリ比較可能な型
等価性QMap

パブリック型

パブリック関数

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)
(since 6.12) bool operator<(const QMap<Key, T> &lhs, const QMap<Key, T> &rhs)
QDataStream &operator<<(QDataStream &out, const QMap<Key, T> &map)
(since 6.12) bool operator<=(const QMap<Key, T> &lhs, const QMap<Key, T> &rhs)
(since 6.12) auto operator<=>(const QMap<Key, T> &lhs, const QMap<Key, T> &rhs)
bool operator==(const QMap<Key, T> &lhs, const QMap<Key, T> &rhs)
(since 6.12) bool operator>(const QMap<Key, T> &lhs, const QMap<Key, T> &rhs)
(since 6.12) bool operator>=(const QMap<Key, T> &lhs, const QMap<Key, T> &rhs)
QDataStream &operator>>(QDataStream &in, QMap<Key, T> &map)

詳細な説明

QMap<KEY, T> は Qtのジェネリックコンテナクラスの一つであり、Key は検索キーとして使用される型、T はマッピングされる値の型です。これは (キー, 値) のペアを格納し、キーによる高速な検索を可能にします。

QMap とQHash は非常に似た機能を提供します。違いは以下の通りです:

  • QHash QMapよりも平均して高速な検索が可能です。(詳細については「アルゴリズムの計算量」を参照してください。)
  • QHash を反復処理する場合、項目の順序は任意です。一方、QMap では、項目は常にキー順にソートされます。
  • QHash のキー型は、operator==()およびグローバル関数qHash(Key)を提供する必要があります。QMapのキー型は、全順序を指定するoperator<()を提供する必要があります。Qt 5.8.1以降では、基礎となるoperator<()が全順序を提供していない場合でも、ポインタ型をキーとして安全に使用できます。

以下に、QString をキーとし、int を値とするQMapの例を示します:

QMap<QString, int> map;

(キー, 値)のペアをマップに挿入するには、operator[]() を使用できます:

map["one"] = 1;
map["three"] = 3;
map["seven"] = 7;

これにより、次の3つの(キー、値)のペアがQMapに挿入されます:("one", 1)、("three", 3)、および("seven", 7)。マップに項目を挿入する別の方法として、insert() を使用する方法があります:

map.insert("twelve", 12);

値を検索するには、演算子[]() またはvalue() を使用します:

int num1 = map["thirteen"];
int num2 = map.value("thirteen");

マップに指定されたキーを持つ項目がない場合、これらの関数はデフォルト構築された値を返します。

マップに特定のキーが含まれているかどうかを確認するには、contains() を使用します:

int timeout = 30;
if (map.contains("TIMEOUT"))
    timeout = map.value("TIMEOUT");

また、指定されたキーを持つ項目が存在しない場合に、2番目の引数をデフォルト値として使用するvalue()のオーバーロードもあります:

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 を使用すれば、キーごとに複数の値を格納することができます。

マップから値のみ(キーではなく)を取得したい場合は、範囲指定による for ループを使用することもできます:

QMap<QString, int> map;
//...
for (int value : std::as_const(map))
    cout << value << endl;

マップから項目を削除するにはいくつかの方法があります。1つの方法は、remove()を呼び出すことです。これにより、指定されたキーを持つ項目がすべて削除されます。もう1つの方法は、QMutableMapIterator::remove()を使用することです。さらに、clear()を使用してマップ全体をクリアすることもできます。

QMapのキーおよび値のデータ型は、代入可能なデータ型でなければなりません。 これには、通常遭遇するほとんどのデータ型が含まれますが、例えば、QWidget を値として格納することはコンパイラによって許可されません。その代わりに、QWidget *を格納してください。さらに、QMapのキー型は演算子<()を提供している必要があります。QMapはこれを使用して項目のソートを維持しており、x < y もy < x も真でない場合、2つのキーx とy は等価であるとみなします。

例:

#ifndef EMPLOYEE_H
#define EMPLOYEE_H

class Employee
{
public:
    Employee() {}
    Employee(const QString &name, QDate dateOfBirth);
    QString name() const { return myName; }
    QDate dateOfBirth() const { return myDateOfBirth; }
    //...

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

QMap::const_iterator の Qt スタイルの同義語。

QMap::Iterator

QMap::iterator の Qt スタイルの同義語。

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 の typedef。STL との互換性を確保するために用意されています。

[alias] QMap::key_type

Key の typedef。STL との互換性を確保するために用意されています。

QMap::key_value_iterator

QMap::key_value_iterator の typedef は、QMap 用の STL スタイルのイテレータを提供します。

QMap::key_value_iterator は、本質的にはQMap::iterator と同じですが、operator*() が値ではなくキーと値のペアを返す点が異なります。

QKeyValueIteratorも参照してください 。

[alias] QMap::mapped_type

T の typedef。STL との互換性を確保するために用意されています。

[alias] QMap::size_type

int の typedef。STL との互換性のために用意されています。

メンバ関数のドキュメント

[default] 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()も参照してください 。

[implicit] QMap::QMap(const QMap<Key, T> &other)

other のコピーを作成します。

QMapは暗黙的に共有されているため、この操作は定数時間で実行されます。これにより、関数からQMapを返す処理が非常に高速になります。共有されているインスタンスが変更された場合、そのインスタンスはコピーされます(コピー・オン・ライト)。この処理には線形時間がかかります。

operator=も参照してください 。

[implicit] QMap::QMap(QMap<Key, T> &&other)

QMapのインスタンスを動的に生成します。

[implicit] QMap::~QMap()

マップを破棄します。マップ内の値への参照、およびこのマップに対するすべての反復子は無効になります。

[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<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 スタイルのconstイテレータを返します。

begin() およびcend()も参照してください 。

QMap<Key, T>::const_iterator QMap::cend() const

マップの最後の要素の直後に位置する仮想の要素を指す、STL スタイルのconstイテレータを返します。

cbegin() およびend()も参照してください 。

void QMap::clear()

マップからすべてのアイテムを削除します。

remove()も参照してください 。

QMap<Key, T>::const_iterator QMap::constBegin() const

マップの最初の要素を指す、STL スタイルのconstイテレータを返します。

begin() およびconstEnd()も参照してください 。

QMap<Key, T>::const_iterator QMap::constEnd() const

マップの最後の要素の直後に位置する仮想の要素を指す、STL スタイルのconstイテレータを返します。

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 スタイルのconstイテレータを返します。

keyValueBegin()も参照してください 。

QMap<Key, T>::const_key_value_iterator QMap::constKeyValueEnd() const

マップの最後のエントリの直後に位置する仮想のエントリを指す、STL スタイルのconstイテレータを返します。

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()` と同等であり、マップが空の場合は true を返し、それ以外の場合は false を返します。

QMap<Key, T>::iterator QMap::end()

マップの最後の要素の後に存在する架空の要素を指す、STL スタイルのイテレータを返します。

begin() およびconstEnd()も参照してください 。

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 ` が指す (キー, 値) のペアをマップから削除し、マップ内の次の項目へのイテレータを返します。

注: イテレータ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) が指す (キー, 値) のペアをマップから削除します。削除された最後の要素の直後に続くマップ内の項目へのイテレータを返します。

注: 範囲[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 に置き換えられます。

ヒントが正しく、マップが共有されていない場合、挿入は償却定数時間で実行されます。

ソート済みのデータからマップを作成する場合、constBegin() を使用して最大のキーを最初に挿入する方が、constEnd() を使用してソート順に挿入するよりも高速です。これは、constEnd() - 1(ヒントが有効かどうかを確認するために必要)に対数時間かかるためです。

注:ヒントの使用には注意が必要です。古い共有インスタンスからのイテレータを指定するとクラッシュする可能性があるほか、マップとpos マップの両方が静かに破損してしまうリスクもあります。

新しい/更新された要素を指すイテレータを返します。

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

bool QMap::isEmpty() const

マップに要素が含まれていない場合は `true ` を返し、それ以外の場合は `false` を返します。

size()も参照してください 。

Key QMap::key(const T &value, const Key &defaultKey = Key()) const

値が `value` である最初のキーを返します。マップに値が `value` である項目が含まれていない場合は、`defaultKey ` を返します。defaultKey が指定されていない場合、この関数はデフォルト構築されたキーを返します。

QMap の内部データ構造は、値による検索ではなくキーによる高速な検索用に最適化されているため、この関数の実行速度は遅くなる可能性があります(線形時間)。

value() およびkeys()も参照してください 。

QMap<Key, T>::key_iterator QMap::keyBegin() const

マップ内の最初のキーを指す、STL スタイルのconstイテレータを返します。

keyEnd() およびfirstKey()も参照してください 。

QMap<Key, T>::key_iterator QMap::keyEnd() const

マップの最後のキーの後に存在する架空の項目を指す、STL スタイルのconstイテレータを返します。

keyBegin() およびlastKey()も参照してください 。

QMap<Key, T>::key_value_iterator QMap::keyValueBegin()

マップの最初のエントリを指すSTL形式のイテレータを返します。

keyValueEnd()も参照してください 。

QMap<Key, T>::const_key_value_iterator QMap::keyValueBegin() const

マップの最初のエントリを指す、STL スタイルのconstイテレータを返します。

keyValueEnd()も参照してください 。

QMap<Key, T>::key_value_iterator QMap::keyValueEnd()

マップの最後のエントリの直後に位置する仮想のエントリを指す、STL スタイルのイテレータを返します。

keyValueBegin()も参照してください 。

QMap<Key, T>::const_key_value_iterator QMap::keyValueEnd() const

マップの最後のエントリの直後に位置する仮想のエントリを指す、STL スタイルのconstイテレータを返します。

keyValueBegin()も参照してください 。

QList<Key> QMap::keys() const

マップ内のすべてのキーを昇順で並べたリストを返します。

この順序は、values() で使用される順序と同じであることが保証されています。

この関数は、線形時間で新しいリストを作成します。これに伴う時間およびメモリの使用は、keyBegin() からkeyEnd() へ反復処理を行うことで回避できます。

values() およびkey()も参照してください 。

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 を返します。

clear() およびtake()も参照してください 。

[since 6.1] template <typename Predicate> QMap<Key, T>::size_type QMap::removeIf(Predicate pred)

pred という述語が true を返すすべての要素をマップから削除します。

この関数は、QMap<Key, T>::iterator 型の引数、またはstd::pair<const Key &, T &> 型の引数を受け取る述語をサポートしています。

削除された要素がある場合は、その数を返します。

この関数は Qt 6.1 で導入されました。

clear() およびtake()も参照してください 。

QMap<Key, T>::size_type QMap::size() const

マップに含まれる (キー, 値) のペアの数を返します。

isEmpty() およびcount()も参照してください 。

[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() への反復処理を行うことで回避できます。

keys() およびvalue()も参照してください 。

[implicit] QMap<Key, T> &QMap::operator=(QMap<Key, T> &&other)

other をこのQMap インスタンスに割り当てます。

[implicit] QMap<Key, T> &QMap::operator=(const QMap<Key, T> &other)

このマップにother を割り当て、このマップへの参照を返します。

T &QMap::operator[](const Key &key)

キー「key 」に関連付けられた値を、変更可能な参照として返します。

マップにキー `key` を持つ項目が含まれていない場合、この関数はキー `key`を持つデフォルト構築された値をマップに挿入し、その参照を返します。

insert() およびvalue()も参照してください 。

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)

述語 `pred ` が真を返すすべての要素を、マップ `map` から削除します。

この関数は、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つのマップは、同じ (key, value) ペアを含んでいる場合に等しいとみなされます。

この関数では、キーと値の型が `operator==()` を実装している必要があります。

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

[since 6.12] bool operator<(const QMap<Key, T> &lhs, const QMap<Key, T> &rhs)

lhs がrhsより辞書順で小さい場合は、true を返します。それ以外の場合は、false を返します。

この演算子は、キー型Key とマッピング型T の両方が、operator<=>() (C++20 モードの場合)、compareThreeWay() ヘルパーメソッド、またはoperator<() のいずれかを提供している場合に利用可能です。

この関数は Qt 6.12 で導入されました。

template <typename Key, typename T> QDataStream &operator<<(QDataStream &out, const QMap<Key, T> &map)

マップ `map ` をストリーム `out` に書き込みます。

この関数では、キーと値の型が `operator<<()` を実装している必要があります。

QDataStream 演算子の形式も参照してください 。

[since 6.12] bool operator<=(const QMap<Key, T> &lhs, const QMap<Key, T> &rhs)

lhs がrhsよりも辞書順で小さいか等しい場合はtrue を返し、それ以外の場合はfalse を返します。

この演算子は、キー型 `Key ` とマッピング型 `T ` の両方が、`operator<=>() `(C++20 モードの場合)、`compareThreeWay() ` ヘルパーメソッド、または `operator<()` のいずれかを提供している場合に利用可能です。

この関数は Qt 6.12 で導入されました。

[since 6.12] auto operator<=>(const QMap<Key, T> &lhs, const QMap<Key, T> &rhs)

lhs とrhs の内容を辞書順で比較します。適用可能なカテゴリ型の中で最も強いものの結果を返します。

注:この演算子は 、キー型 `Key ` とマッピング型 `T ` の両方が `std::three_way_comparable ` コンセプトの要件を満たすか、または `operator<()` を提供する場合にのみ、C++20 モードで利用可能です。この場合、`<`、`<=`、`>`、および `>= ` 演算子は、`operator<=>() ` および `operator==()` から合成されます。

この関数は Qt 6.12 で導入されました。

bool operator==(const QMap<Key, T> &lhs, const QMap<Key, T> &rhs)

lhs がrhs と等しい場合、true を返します。それ以外の場合は false を返します。

2つのマップは、同じ (キー, 値) のペアを含んでいる場合に等しいとみなされます。

この関数では、キーと値の型が `operator==()` を実装している必要があります。

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

[since 6.12] bool operator>(const QMap<Key, T> &lhs, const QMap<Key, T> &rhs)

lhs がrhsより辞書順で大きい場合はtrue を返し、そうでない場合はfalse を返します。

この演算子は、キー型 `Key ` とマッピング先型 `T ` の両方が、`operator<=>() `(C++20 モードの場合)、`compareThreeWay() ` ヘルパーメソッド、または `operator<()` のいずれかを提供している場合に利用可能です。

この関数は Qt 6.12 で導入されました。

[since 6.12] bool operator>=(const QMap<Key, T> &lhs, const QMap<Key, T> &rhs)

lhs がrhsより辞書順で大きい、または等しい場合はtrue を返し、それ以外の場合はfalse を返します。

この演算子は、キー型Key とマッピングされた型T の両方が、operator<=>() (C++20 モード)、compareThreeWay() ヘルパーメソッド、またはoperator<() のいずれかを提供している場合に利用可能です。

この関数は Qt 6.12 で導入されました。

template <typename Key, typename T> QDataStream &operator>>(QDataStream &in, QMap<Key, T> &map)

ストリーム `in ` からマップを読み取り、`map` に格納します。

この関数では、キーと値の型がoperator>>() を実装している必要があります。

QDataStream 演算子の形式についても参照してください 。

© 2026 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.