QMultiHash Class

template <typename Key, typename T> class QMultiHash

QMultiHash クラスは、多値ハッシュを提供する便利なQHash サブクラスです。詳細...

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

注意:このクラスの関数はすべてリエントラントです。

パブリック型

パブリック関数

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 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)
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)
QDataStream &operator<<(QDataStream &out, const QMultiHash<Key, T> &hash)
QDataStream &operator>>(QDataStream &in, QMultiHash<Key, T> &hash)

詳細説明

QMultiHash<Key, T> は Qt の汎用コンテナクラスの一つです。QHash を継承し、QHash よりも多値ハッシュを格納するのに適したいくつかの便利な関数で拡張しています。多値ハッシュとは、同じキーで複数の値を格納できるハッシュのことです。

QMultiHashは、QHash のAPIをほぼ踏襲している。例えば、isEmpty() を使ってハッシュが空かどうかをテストしたり、QHash のイテレータ・クラス(例えば、QHashIterator )を使ってQMultiHashをトラバースすることができます。しかし、QHash とは対照的に、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() を使用してください。

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

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 のドキュメントを参照してください。

QHashQHashIteratorQMutableHashIteratorQMultiMapも参照のこと

メンバ型のドキュメント

QMultiHash::const_key_value_iterator

QMultiHash::const_key_value_iterator typedef は、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*() が値の代わりに key/value ペアを返す点が異なります。

QKeyValueIteratorも参照してください

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

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() とは異なります)。

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

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

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] T QMultiHash::value(const Key &key) const

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

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

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

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

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

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

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

QMultiHash の内部データ構造は、値ではなくキーで高速に検索できるように最適化されているため、この関数は遅い(線形時間)場合がある。

[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も参照してください

[noexcept] 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] 内の各要素のコピーでマルチハッシュを構築します。範囲によって反復される要素は、firstsecond データメンバ(std::pair のような)を持つオブジェクトでなければならず、それぞれKeyT に変換可能です。あるいは、反復子はkey()value() メンバ関数を持たなければならず、それぞれKey に変換可能なキーとT に変換可能な値を返します。

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

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

警告 返されたイテレータ/参照は、次にハッシュに対して非定数関数を呼び出したとき、またはハッシュが破棄されたときには無効になっていると考えるべきである。

constBegin() およびend()も参照

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

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

警告 返されたイテレータ/参照は、次にそのハッシュに対して非定数関数を呼び出したとき、またはハッシュが破棄されたときに無効化されると考えるべきです。

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

ハッシュの最初の項目を指す constSTL 形式のイテレータを返します。

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

begin() およびcend()も参照

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

ハッシュの最後のアイテムの後にある架空のアイテムを指す constSTL 形式のイテレータを返します。

警告 警告: 返されたイテレータ/参照は、次にハッシュに対して const でない関数を呼び出したとき、あるいはハッシュが破棄されたときに無効となります。

cbegin() およびend()も参照

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

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

注意: この関数は、"std::is_nothrow_destructible<Node>::value" が真であっても例外をスローしません。

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

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

ハッシュの最初の項目を指すSTL 形式のイテレータを返します。

警告 返されたイテレータ/参照は、次にハッシュに対して const でない関数を呼び出したとき、またはハッシュが破棄されたときに無効となります。

begin() およびconstEnd()も参照

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

ハッシュの最後のアイテムの後にある架空のアイテムを指す constSTL 形式のイテレータを返します。

警告 警告: 返されたイテレータ/参照は、次にハッシュに対して const でない関数を呼び出したとき、あるいはハッシュが破棄されたときに無効となります。

constBegin() およびend()も参照

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

ハッシュ内のkeyvalue を持つ項目を指すイテレータを返します。

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

警告 返されたイテレータ/参照は、次にそのハッシュに対してconstでない関数を呼び出したとき、あるいはハッシュが破棄されたときに無効となります。

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

ハッシュの最初のエントリを指す constSTL 形式のイテレータを返します。

警告 返されたイテレータや参照は、次にそのハッシュに対して const でない関数を呼び出したときや、ハッシュが破棄されたときには無効になっていると考えるべきです。

keyValueBegin()も参照

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

ハッシュの最後のエントリの後の架空のエントリを指す constSTL 形式のイテレータを返します。

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

constKeyValueBegin()も参照のこと

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

ハッシュにkeyvalue の項目が含まれている場合はtrue を返し、そうでない場合はfalse を返す。

contains() も参照

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

key およびvalue を持つ項目の数を返します。

count()も参照

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

ハッシュの最後の項目の後の架空の項目を指すSTL 形式のイテレータを返します。

警告 返されたイテレータ/参照は、次にハッシュに対して非定数関数を呼び出したとき、あるいはハッシュが破棄されたときには無効になっていると考えるべきです。

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::find(const Key &key, const T &value)

key valueハッシュにそのような項目がない場合、この関数はend() を返します。

ハッシュにkeyvalue を持つ複数の項目が含まれる場合、返されるイテレータは最近挿入された項目を指す。

警告 返されたイテレータ/参照は、次にハッシュに対して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() とは異なります)。

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

警告: 警告: 返されたイテレータや参照は、次にハッシュに対して非定数関数を呼び出したとき、あるいはハッシュが破棄されたときに無効となります。

replace()も参照

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

ハッシュの最初のキーを指す constSTL 形式のイテレータを返します。

警告 警告: 返されたイテレータ/参照は、次にハッシュに対して非定数関数を呼び出したとき、あるいはハッシュが破棄されたときに無効となります。

keyEnd()も参照

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

ハッシュの最後のキーの後の架空の項目を指す constSTL 形式のイテレータを返します。

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

keyBegin()も参照

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

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

警告 返されたイテレータ/参照は、次にハッシュに対して非定数関数を呼び出したとき、あるいはハッシュが破棄されたときに無効となります。

keyValueEnd()も参照

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

ハッシュの最初のエントリを指す constSTL 形式のイテレータを返します。

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

keyValueEnd()も参照

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

ハッシュの最後のエントリの後の架空のエントリを指すSTL 形式のイテレータを返します。

警告 返されたイテレータや参照は、次にハッシュに対して nononst 関数を呼び出したときや、ハッシュが破棄されたときには無効になっていると考えるべきです。

keyValueBegin()も参照

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

ハッシュの最後のエントリの後の架空のエントリを指す constSTL 形式のイテレータを返します。

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

keyValueBegin()も参照

QList<Key> QMultiHash::keys() const

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

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

この関数は、線形時間で新しいリストを作成する。keyBegin() からkeyEnd() を繰り返し実行することで、時間とメモリの浪費を避けることができる。

values() およびkey()も参照

qsizetype QMultiHash::remove(const Key &key)

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

remove()も参照 ください。

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

remove() : ハッシュからkey および値value を持つすべての項目を削除する。削除した項目の数を返します。

remove()も参照

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

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

この関数は、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 に置換されます。

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

警告 返されたイテレータ/参照は、次にハッシュに対して非定数関数を呼び出したとき、またはハッシュが破棄されたときには無効になっていると考えるべきです。

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

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

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

QList<T> QMultiHash::values() const

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

この順序は、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 を持つ複数の項目が含まれる場合、この関数は最も最近挿入された値への参照を返します。

警告 返されたイテレータ/参照は、次にハッシュに対して非定数関数を呼び出したとき、またはハッシュが破棄されたときには無効になっていると考えるべきである。

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)

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

T は qHash() でサポートされている必要があります。

注意: この関数は、"noexcept(qHash(std::declar<Key&>()) && noexcept(qHash(std::declval<T&>()))" が真の場合、例外をスローしません。

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

ハッシュhash をストリームout に書き込む。

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

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

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

ストリームin からハッシュをhash に読み込みます。

この関数には、operator>>() を実装するための key 型と value 型が必要です。

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

©2024 The Qt Company Ltd. 本書に含まれる文書の著作権は、それぞれの所有者に帰属します。 本書で提供されるドキュメントは、Free Software Foundation が発行したGNU Free Documentation License version 1.3に基づいてライセンスされています。 Qtおよびそれぞれのロゴは、フィンランドおよびその他の国におけるThe Qt Company Ltd.の 商標です。その他すべての商標は、それぞれの所有者に帰属します。