このページでは

QMultiHash Class

template <typename Key, typename T> class QMultiHash

QMultiHash クラスは、多値ハッシュテーブルを提供します。詳細...

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

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

QMultiHash の比較

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

パブリック型

パブリック関数

QMultiHash()
QMultiHash(const QHash<Key, T> &other)
QMultiHash(std::initializer_list<std::pair<Key, T>> list)
QMultiHash(InputIterator begin, InputIterator end)
(since 6.4) auto asKeyValueRange() &&
(since 6.4) auto asKeyValueRange() &
(since 6.4) auto asKeyValueRange() const &&
(since 6.4) auto asKeyValueRange() const &
QMultiHash<Key, T>::iterator begin()
QMultiHash<Key, T>::const_iterator begin() const
QMultiHash<Key, T>::const_iterator cbegin() const
QMultiHash<Key, T>::const_iterator cend() const
void clear()
QMultiHash<Key, T>::const_iterator constBegin() const
QMultiHash<Key, T>::const_iterator constEnd() const
QMultiHash<Key, T>::const_iterator constFind(const Key &key, const T &value) const
QMultiHash<Key, T>::const_key_value_iterator constKeyValueBegin() const
QMultiHash<Key, T>::const_key_value_iterator constKeyValueEnd() const
bool contains(const Key &key, const T &value) const
qsizetype count(const Key &key, const T &value) const
QMultiHash<Key, T>::iterator emplace(Key &&key, Args &&... args)
QMultiHash<Key, T>::iterator emplace(const Key &key, Args &&... args)
QMultiHash<Key, T>::iterator emplaceReplace(Key &&key, Args &&... args)
QMultiHash<Key, T>::iterator emplaceReplace(const Key &key, Args &&... args)
QMultiHash<Key, T>::iterator end()
QMultiHash<Key, T>::const_iterator end() const
std::pair<QMultiHash<Key, T>::iterator, QMultiHash<Key, T>::iterator> equal_range(const Key &key)
std::pair<QMultiHash<Key, T>::const_iterator, QMultiHash<Key, T>::const_iterator> equal_range(const Key &key) const
QMultiHash<Key, T>::iterator erase(QMultiHash<Key, T>::const_iterator pos)
QMultiHash<Key, T>::iterator find(const Key &key, const T &value)
QMultiHash<Key, T>::const_iterator find(const Key &key, const T &value) const
QMultiHash<Key, T>::iterator insert(const Key &key, const T &value)
(since 6.11) QMultiHash<Key, T>::iterator insert(Key &&key, T &&value)
(since 6.11) QMultiHash<Key, T>::iterator insert(Key &&key, const T &value)
(since 6.11) QMultiHash<Key, T>::iterator insert(const Key &key, T &&value)
Key key(const T &value) const
Key key(const T &value, const Key &defaultKey) const
QMultiHash<Key, T>::key_iterator keyBegin() const
QMultiHash<Key, T>::key_iterator keyEnd() const
QMultiHash<Key, T>::key_value_iterator keyValueBegin()
QMultiHash<Key, T>::const_key_value_iterator keyValueBegin() const
QMultiHash<Key, T>::key_value_iterator keyValueEnd()
QMultiHash<Key, T>::const_key_value_iterator keyValueEnd() const
QList<Key> keys() const
qsizetype remove(const Key &key)
qsizetype remove(const Key &key, const T &value)
(since 6.1) qsizetype removeIf(Predicate pred)
QMultiHash<Key, T>::iterator replace(const Key &key, const T &value)
void swap(QMultiHash<Key, T> &other)
T take(const Key &key)
QList<Key> uniqueKeys() const
(since 6.0) QMultiHash<Key, T> &unite(const QHash<Key, T> &other)
QMultiHash<Key, T> &unite(const QMultiHash<Key, T> &other)
T value(const Key &key) const
T value(const Key &key, const T &defaultValue) const
QList<T> values() const
QList<T> values(const Key &key) const
QMultiHash<Key, T> operator+(const QMultiHash<Key, T> &other) const
QMultiHash<Key, T> &operator+=(const QMultiHash<Key, T> &other)
T &operator[](const Key &key)
(since 6.1) qsizetype erase_if(QMultiHash<Key, T> &hash, Predicate pred)
size_t qHash(const QMultiHash<Key, T> &key, size_t seed = 0)
bool operator!=(const QMultiHash<Key, T> &lhs, const QMultiHash<Key, T> &rhs)
QDataStream &operator<<(QDataStream &out, const QMultiHash<Key, T> &hash)
bool operator==(const QMultiHash<Key, T> &lhs, const QMultiHash<Key, T> &rhs)
QDataStream &operator>>(QDataStream &in, QMultiHash<Key, T> &hash)

詳細な説明

QMultiHash<KEY, T>は Qtのジェネリックコンテナクラスの 1つであり、ここでKey は検索キーとして使用される型、T はマッピングされる値の型です。これは、同じキーに対して複数の値を保持できるハッシュテーブルを提供します。

QMultiHash は、QHash の API をほぼ踏襲しています。たとえば、isEmpty() を使用してハッシュが空であるかどうかをテストしたり、QHash のイテレータクラス(QHashIterator など)を使用して QMultiHash をトラバースしたりすることができます。 しかし、QHash とは異なり、QMultiHashはinsert()関数を提供しており、これにより同じキーを持つ複数の項目を挿入することができます。replace()関数はQHash::insert()に対応しています。また、便利なoperator+()およびoperator+=()も提供しています。

QMultiMap とは異なり、QMultiHashは挿入された項目の順序を保証しません。唯一保証されるのは、同じキーを持つ項目が、最も新しく挿入された値から最も古い値へと連続して表示されるということです。

例:

QMultiHash<QString, int> hash1, hash2, hash3;

hash1.insert("plenty", 100);
hash1.insert("plenty", 2000);
// hash1.size() == 2

hash2.insert("plenty", 5000);
// hash2.size() == 1

hash3 = hash1 + hash2;
// hash3.size() == 3

QHash とは異なり、QMultiHashは演算子[]を提供しません。特定のキーを持つ最も最近挿入された項目にアクセスしたい場合は、value()またはreplace()を使用してください。

単一のキーに対するすべての値を取得したい場合は、values(const Key &key)を使用できます。これはQList<T>を返します:

QList<int> values = hash.values("plenty");
for (auto i : std::as_const(values))
    cout << i << endl;

同じキーを持つ要素は、挿入された順に新しいものから古いものの順に取得できます。

より効率的なアプローチは、find() を呼び出して、指定されたキーを持つ最初の項目に対する STL スタイルのイテレータを取得し、そこから反復処理を行うことです:

auto i = hash.constFind("plenty");
while (i != hash.cend() && i.key() == "plenty") {
    cout << i.value() << endl;
    ++i;
}

QMultiHashのキーおよび値のデータ型は、代入可能なデータ型でなければなりません。 たとえば、QWidget を値として格納することはできません。代わりに、QWidget *を格納してください。さらに、QMultiHashのキー型はoperator==()を提供している必要があり、また、その型の名前空間内に、キーの型を持つ引数に対するハッシュ値を返すqHash()関数が存在する必要があります。詳細については、QHash のドキュメントを参照してください。

QHash 、QHashIterator 、QMutableHashIterator 、およびQMultiMapも参照してください 。

メンバ型のドキュメント

QMultiHash::const_key_value_iterator

QMultiHash::const_key_value_iterator 型定義は、QMultiHash に対して STL スタイルの const イテレータを提供します。

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

QKeyValueIteratorも参照してください 。

QMultiHash::key_value_iterator

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

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

QKeyValueIteratorも参照してください 。

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

[noexcept default] QMultiHash::QMultiHash()

空のハッシュを作成します。

[explicit] QMultiHash::QMultiHash(const QHash<Key, T> &other)

other (QHash または QMultiHash のいずれか)のコピーを作成します。

QMultiHash::QMultiHash(std::initializer_list<std::pair<Key, T>> list)

初期化リスト `list` に含まれる各要素のコピーを使用して、マルチハッシュを構築します。

template <typename InputIterator> QMultiHash::QMultiHash(InputIterator begin, InputIterator end)

イテレータの範囲 [begin,end) 内の各要素のコピーを用いて、マルチハッシュを構築します。 範囲によって反復処理される要素は、first およびsecond データメンバ(std::pair など)を持ち、それぞれKey およびT に変換可能なオブジェクトである必要があるか、あるいは、イテレータがkey() およびvalue() メンバ関数を持ち、それぞれKey に変換可能なキーとT に変換可能な値を返す必要がある。

[since 6.4] auto QMultiHash::asKeyValueRange() &&

[since 6.4] auto QMultiHash::asKeyValueRange() &

[since 6.4] auto QMultiHash::asKeyValueRange() const &&

[since 6.4] auto QMultiHash::asKeyValueRange() const &

このハッシュをキー/値のペアとして反復処理できる範囲オブジェクトを返します。たとえば、この範囲オブジェクトは、構造化バインディング宣言と組み合わせて、範囲ベースの for ループで使用できます。

QMultiHash<QString, int> hash;
hash.insert("January", 1);
hash.insert("February", 2);
// ...
hash.insert("December", 12);

for (auto [key, value] : hash.asKeyValueRange()) {
    cout << qPrintable(key) << ": " << value << endl;
    --value; // convert to JS month indexing
}

この方法で取得されるキーと値は、いずれもハッシュ内の要素への参照であることに注意してください。具体的には、値を変更するとハッシュ自体が変更されます。

警告: 返された イテレータや参照は、ハッシュに対して非const関数を次に呼び出したとき、またはハッシュが破棄された時点で無効化されたものとみなすべきです。

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

QKeyValueIteratorも参照してください 。

QMultiHash<Key, T>::iterator QMultiHash::begin()

ハッシュの最初の要素を指すSTLスタイルのイテレータを返します。

警告: 返された イテレータや参照は、ハッシュに対して非const関数を次に呼び出したとき、またはハッシュが破棄された時点で無効化されたものとみなすべきです。

関連項目: constBegin() およびend()。

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

警告:返された イテレータや参照は、ハッシュに対して非const関数を次に呼び出したとき、またはハッシュが破棄された時点で無効化されたものとみなすべきです。

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

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

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

警告:返された イテレータや参照は、ハッシュに対して非const関数を次に呼び出したとき、またはハッシュが破棄された時点で無効化されたものとみなすべきです。

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

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

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

警告: 返された イテレータや参照は、ハッシュに対して非const関数を次に呼び出したとき、またはハッシュが破棄された時点で無効化されたものとみなすべきです。

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

[noexcept(...)] void QMultiHash::clear()

ハッシュからすべての要素を削除し、ハッシュが使用していたメモリをすべて解放します。

注: std::is_nothrow_destructible<Node>::value がtrue の場合、この関数はnoexceptとなります 。

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

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

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

警告: 返された イテレータや参照は、次にハッシュに対して非const関数を呼び出したとき、またはハッシュが破棄された時点で無効化されたものとみなされるべきです。

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

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

ハッシュの最後の項目の後に存在する仮想の項目を指す、STL スタイルのconstイテレータを返します。

警告: 返された イテレータや参照は、ハッシュに対して非const関数を次に呼び出したとき、またはハッシュが破棄された時点で無効化されたものとみなすべきです。

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

[noexcept] QMultiHash<Key, T>::const_iterator QMultiHash::constFind(const Key &key, const T &value) const

ハッシュ内のkey およびvalue を持つ項目を指すイテレータを返します。

ハッシュにそのような項目が含まれていない場合、この関数は `constEnd()` を返します。

警告: 返された イテレータや参照は、ハッシュに対して非const関数を次に呼び出したとき、またはハッシュが破棄された時点で無効化されたものとみなすべきです。

[noexcept] QMultiHash<Key, T>::const_key_value_iterator QMultiHash::constKeyValueBegin() const

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

警告:返された イテレータや参照は、ハッシュに対して非const関数を次に呼び出したとき、またはハッシュが破棄された時点で無効化されたものとみなすべきです。

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

[noexcept] QMultiHash<Key, T>::const_key_value_iterator QMultiHash::constKeyValueEnd() const

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

警告: 返された イテレータや参照は、ハッシュに対して非const関数を次に呼び出したとき、またはハッシュが破棄された時点で無効化されたものとみなすべきです。

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

[noexcept] bool QMultiHash::contains(const Key &key, const T &value) const

ハッシュに、key およびvalue を持つ項目が含まれている場合はtrue を返します。そうでない場合はfalse を返します。

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

[noexcept] qsizetype QMultiHash::count(const Key &key, const T &value) const

key およびvalue に一致する項目の数を返します。

「contains()」も参照してください 。

template <typename... Args> QMultiHash<Key, T>::iterator QMultiHash::emplace(Key &&key, Args &&... args)

template <typename... Args> QMultiHash<Key, T>::iterator QMultiHash::emplace(const Key &key, Args &&... args)

コンテナに新しい要素を挿入します。この新しい要素は、args を構築引数として使用し、その場(インプレース)で構築されます。

ハッシュ内に同じキーを持つ項目がすでに存在する場合、この関数は単に新しい項目を作成します。(この動作は、既存の項目の値を上書きする `replace()` とは異なります。)

新しい要素を指すイテレータを返します。

警告: 返された イテレータや参照は、ハッシュに対して非const関数を次に呼び出したとき、またはハッシュが破棄された時点で無効化されたものとみなすべきです。

insertも参照してください 。

template <typename... Args> QMultiHash<Key, T>::iterator QMultiHash::emplaceReplace(Key &&key, Args &&... args)

template <typename... Args> QMultiHash<Key, T>::iterator QMultiHash::emplaceReplace(const Key &key, Args &&... args)

コンテナに新しい要素を挿入します。この新しい要素は、args を構築の引数として使用して、その場(インプレース)で構築されます。

ハッシュ内に同じキーを持つ項目がすでに存在する場合、その項目の値は `args` から生成された値に置き換えられます。

新しい要素を指すイテレータを返します。

警告: 返された イテレータや参照は、ハッシュに対して非const関数を次に呼び出したとき、またはハッシュが破棄された時点で無効化されたものとみなす必要があります。

replace およびemplaceも参照してください 。

[noexcept] QMultiHash<Key, T>::iterator QMultiHash::end()

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

警告:返された イテレータや参照は、ハッシュに対して非const関数を次に呼び出したとき、またはハッシュが破棄された時点で無効化されたものとみなされるべきです。

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

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

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

std::pair<QMultiHash<Key, T>::iterator, QMultiHash<Key, T>::iterator> QMultiHash::equal_range(const Key &key)

key に格納されている値の範囲[first, second) を区切るイテレータのペアを返します。範囲が空の場合、両方のイテレータはend() と等しくなります。

警告: 返された イテレータや参照は、ハッシュに対して非const関数を次に呼び出したとき、またはハッシュが破棄された時点で無効化されたものとみなすべきです。

[noexcept] std::pair<QMultiHash<Key, T>::const_iterator, QMultiHash<Key, T>::const_iterator> QMultiHash::equal_range(const Key &key) const

警告:返された イテレータや参照は、ハッシュに対して非const関数を次に呼び出したとき、またはハッシュが破棄された時点で無効化されたものとみなされるべきです。

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

QMultiHash<Key, T>::iterator QMultiHash::erase(QMultiHash<Key, T>::const_iterator pos)

イテレータ `pos ` に関連付けられた (キー, 値) のペアをハッシュから削除し、ハッシュ内の次の項目へのイテレータを返します。

この関数は、QMultiHash の内部データ構造の再ハッシュを一切引き起こしません。つまり、反復処理中に安全に呼び出すことができ、ハッシュ内の項目の順序に影響を与えません。例:

QMultiHash<QObject *, int> objectHash;
//...
QMultiHash<QObject *, int>::iterator i = objectHash.find(obj);
while (i != objectHash.end() && i.key() == obj) {
    if (i.value() == 0) {
        i = objectHash.erase(i);
    } else {
        ++i;
    }
}

警告: 返された イテレータや参照は、ハッシュに対して非const関数を次に呼び出したとき、またはハッシュが破棄された時点で無効になったものとみなすべきです。

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

QMultiHash<Key, T>::iterator QMultiHash::find(const Key &key, const T &value)

key およびvalue を持つ項目を指すイテレータを返します。ハッシュにそのような項目が含まれていない場合、この関数はend() を返します。

ハッシュにkey およびvalue を持つ項目が複数存在する場合、返されるイテレータは最も最近挿入された項目を指します。

警告: 返された イテレータや参照は、ハッシュに対して非const関数を次に呼び出したとき、またはハッシュが破棄された時点で無効化されたものとみなすべきです。

[noexcept] QMultiHash<Key, T>::const_iterator QMultiHash::find(const Key &key, const T &value) const

警告:返された イテレータや参照は、ハッシュに対して非const関数を次に呼び出したとき、またはハッシュが破棄された時点で無効化されたものとみなすべきです。

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

QMultiHash<Key, T>::iterator QMultiHash::insert(const Key &key, const T &value)

key をキー、value を値とする新しい項目を挿入します。

ハッシュに同じキーを持つ項目がすでに存在する場合、この関数は単に新しい項目を作成します。(この動作は、既存の項目の値を上書きするreplace()とは異なります。)

QMultiHash 重複するキーを許可します。既に存在するキーを挿入しても、上書きされるのではなく、別のエントリが追加されます。QMultHash内の項目の順序は保証されません。

新しい要素を指すイテレータを返します。

警告:返された イテレータや参照は、ハッシュに対して非const関数を次に呼び出したとき、またはハッシュが破棄された時点で無効化されたものとみなすべきです。

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

[since 6.11] QMultiHash<Key, T>::iterator QMultiHash::insert(Key &&key, T &&value)

[since 6.11] QMultiHash<Key, T>::iterator QMultiHash::insert(Key &&key, const T &value)

[since 6.11] QMultiHash<Key, T>::iterator QMultiHash::insert(const Key &key, T &&value)

これらの機能は、Qt 6.11で導入されました。

[noexcept] Key QMultiHash::key(const T &value) const

[noexcept] Key QMultiHash::key(const T &value, const Key &defaultKey) const

value にマッピングされた最初のキーを返します。ハッシュにvalue にマッピングされた項目が含まれていない場合は、defaultKey を返します。また、このパラメータが指定されていない場合は、デフォルトで生成されたキーを返します。

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

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

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

警告: 返された イテレータや参照は、ハッシュに対して非const関数を次に呼び出したとき、またはハッシュが破棄された時点で無効化されたものとみなすべきです。

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

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

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

警告: 返された イテレータや参照は、ハッシュに対して非 const 関数を次に呼び出したとき、またはハッシュが破棄された時点で無効化されたものとみなす必要があります。

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

[noexcept] QMultiHash<Key, T>::key_value_iterator QMultiHash::keyValueBegin()

ハッシュの最初のエントリを指すSTLスタイルのイテレータを返します。

警告:返された イテレータや参照は、ハッシュに対して非const関数を次に呼び出したとき、またはハッシュが破棄された時点で無効化されたものとみなすべきです。

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

[noexcept] QMultiHash<Key, T>::const_key_value_iterator QMultiHash::keyValueBegin() const

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

警告: 返された イテレータや参照は、ハッシュに対して非const関数を次に呼び出したとき、またはハッシュが破棄された時点で無効化されたものとみなすべきです。

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

[noexcept] QMultiHash<Key, T>::key_value_iterator QMultiHash::keyValueEnd()

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

警告: 返された イテレータや参照は、ハッシュに対して非const関数を次に呼び出したとき、またはハッシュが破棄された時点で無効化されたものとみなすべきです。

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

[noexcept] QMultiHash<Key, T>::const_key_value_iterator QMultiHash::keyValueEnd() const

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

警告: 返された イテレータや参照は、ハッシュに対して非const関数を次に呼び出したとき、またはハッシュが破棄された時点で無効化されたものとみなすべきです。

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

QList<Key> QMultiHash::keys() const

ハッシュ内のすべてのキーを、任意の順序で含むリストを返します。ハッシュ内で複数回出現するキーは、リスト内でも複数回出現します。

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

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

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

qsizetype QMultiHash::remove(const Key &key)

ハッシュから、key を持つすべての項目を削除します。削除された項目の数を返します。

remove(const Key &key, const T &value)も参照してください 。

qsizetype QMultiHash::remove(const Key &key, const T &value)

ハッシュから、key を持ち、値がvalue であるすべての項目を削除します。削除された項目の数を返します。

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

[since 6.1] template <typename Predicate> qsizetype QMultiHash::removeIf(Predicate pred)

pred という述語が true を返すすべての要素を、マルチハッシュから削除します。

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

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

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

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

QMultiHash<Key, T>::iterator QMultiHash::replace(const Key &key, const T &value)

key というキーと、値がvalue である新しい項目を挿入します。

key を持つ項目がすでに存在する場合、その項目の値はvalue に置き換えられます。

key を持つ項目が複数ある場合、最後に挿入された項目の値がvalue に置き換えられます。

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

警告: 返された イテレータや参照は、ハッシュに対して非 const 関数を次に呼び出したとき、またはハッシュが破棄されたときに無効化されたものとみなすべきです。

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

[noexcept] void QMultiHash::swap(QMultiHash<Key, T> &other)

このマルチハッシュをother と交換します。この操作は非常に高速で、失敗することはありません。

T QMultiHash::take(const Key &key)

key を持つ項目をハッシュから削除し、それに紐づく値を返します。

ハッシュ内にその項目が存在しない場合、この関数はデフォルトの初期化値のみを返します。ハッシュ内にkey に対応する項目が複数存在する場合、最も新しく挿入されたもののみが削除されます。

戻り値を使用しない場合は、remove() の方が効率的です。

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

QList<Key> QMultiHash::uniqueKeys() const

マップ内のすべてのキーを含むリストを返します。マップ内で複数回出現するキーは、返されるリストには1回だけ含まれます。

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

[since 6.0] QMultiHash<Key, T> &QMultiHash::unite(const QHash<Key, T> &other)

other ハッシュ内のすべての項目をこのハッシュに挿入し、このハッシュへの参照を返します。

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

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

QMultiHash<Key, T> &QMultiHash::unite(const QMultiHash<Key, T> &other)

other ハッシュ内のすべての項目をこのハッシュに挿入し、このハッシュへの参照を返します。

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

[noexcept] T QMultiHash::value(const Key &key) const

[noexcept] T QMultiHash::value(const Key &key, const T &defaultValue) const

key に関連付けられた値を返します。

ハッシュにkey を持つ項目が含まれていない場合、この関数はdefaultValue を返します。また、このパラメータが指定されていない場合は、デフォルトで生成された値を返します。

ハッシュ内にkey に対応する項目が複数存在する場合、最も最近に挿入された項目の値が返されます。

QList<T> QMultiHash::values() const

ハッシュ内のすべての値を、任意の順序で格納したリストを返します。1つのキーに複数の値が関連付けられている場合、そのすべての値がリストに含まれ、最後に挿入された値だけになるわけではありません。

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

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

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

QList<T> QMultiHash::values(const Key &key) const

key に関連付けられたすべての値のリストを、最も最近挿入されたものから順に、最も古いものまで返します。

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

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

QMultiHash<Key, T> QMultiHash::operator+(const QMultiHash<Key, T> &other) const

このハッシュに含まれるすべての項目に加え、other に含まれるすべての項目を含むハッシュを返します。両方のハッシュに共通するキーがある場合、結果として得られるハッシュにはそのキーが複数回含まれます。

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

QMultiHash<Key, T> &QMultiHash::operator+=(const QMultiHash<Key, T> &other)

other ハッシュ内のすべての項目をこのハッシュに挿入し、このハッシュへの参照を返します。

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

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

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

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

ハッシュにkey を持つ項目が複数存在する場合、この関数は、最も最近挿入された値への参照を返します。

警告: 返された イテレータや参照は、ハッシュに対して非 const 関数を次に呼び出したとき、またはハッシュが破棄されたときに無効化されたものとみなすべきです。

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

関連する非メンバ関数

[since 6.1] template < typename Key, typename T, typename Predicate > qsizetype erase_if(QMultiHash<Key, T> &hash, Predicate pred)

マルチハッシュ `hash` から、述語 `pred ` が真を返すすべての要素を削除します。

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

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

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

[noexcept(...)] template <typename Key, typename T> size_t qHash(const QMultiHash<Key, T> &key, size_t seed = 0)

seed を計算のシードとして使用し、key のハッシュ値を返します。

Key およびT の型は、qHash() でサポートされている必要があります。

注: noexcept(qHash(std::declval<Key&>())) && noexcept(qHash(std::declval<T&>())) がtrue の場合、この関数は noexcept です。

[noexcept] bool operator!=(const QMultiHash<Key, T> &lhs, const QMultiHash<Key, T> &rhs)

lhs のマルチハッシュがrhs のマルチハッシュと等しくない場合、true を返します。それ以外の場合は、false を返します。

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

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

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

template <typename Key, typename T> QDataStream &operator<<(QDataStream &out, const QMultiHash<Key, T> &hash)

ハッシュ `hash ` をストリーム `out` に書き込みます。

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

「Qt データ型のシリアライズ」も参照してください 。

[noexcept] bool operator==(const QMultiHash<Key, T> &lhs, const QMultiHash<Key, T> &rhs)

lhs のマルチハッシュがrhs のマルチハッシュと等しい場合、true を返します。そうでない場合は、false を返します。

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

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

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

template <typename Key, typename T> QDataStream &operator>>(QDataStream &in, QMultiHash<Key, T> &hash)

ストリーム `in ` からハッシュを読み取り、`hash` に格納します。

この関数を使用するには、キーおよび値の型がoperator>>() を実装している必要があります。

「Qt データ型のシリアライズ」も参照してください 。

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