QMultiHash Class
template <typename Key, typename T> class QMultiHashQMultiHash クラスは、多値ハッシュを提供する便利なQHash サブクラスです。詳細...
Header: | #include <QMultiHash> |
CMake: | find_package(Qt6 REQUIRED COMPONENTS Core) target_link_libraries(mytarget PRIVATE Qt6::Core) |
qmake: | QT += core |
- 継承メンバを含む全メンバのリスト
- QMultiHash は暗黙的に共有されるクラスの一部です。
注意:このクラスの関数はすべてリエントラントです。
パブリック型
class | const_iterator |
class | iterator |
class | key_iterator |
const_key_value_iterator | |
key_value_iterator |
パブリック関数
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 のドキュメントを参照してください。
QHash 、QHashIterator 、QMutableHashIterator 、QMultiMapも参照のこと 。
メンバ型のドキュメント
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以外の関数を呼び出すか、ハッシュが破棄された時点で無効となる。
[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] 内の各要素のコピーでマルチハッシュを構築します。範囲によって反復される要素は、first
とsecond
データメンバ(std::pair
のような)を持つオブジェクトでなければならず、それぞれKey
とT
に変換可能です。あるいは、反復子は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でない関数を呼び出したとき、またはハッシュが破棄されたときに無効化されると考えるべきです。
[noexcept]
QMultiHash<Key, T>::const_iterator QMultiHash::cend() const
ハッシュの最後のアイテムの後にある架空のアイテムを指す constSTL 形式のイテレータを返します。
警告 警告: 返されたイテレータ/参照は、次にハッシュに対して const でない関数を呼び出したとき、あるいはハッシュが破棄されたときに無効となります。
[noexcept(...)]
void QMultiHash::clear()
ハッシュからすべての項目を削除し、ハッシュが使用していたすべてのメモリを解放します。
注意: この関数は、"std::is_nothrow_destructible<Node>::value" が真であっても例外をスローしません。
remove()も参照してください 。
[noexcept]
QMultiHash<Key, T>::const_iterator QMultiHash::constBegin() const
ハッシュの最初の項目を指すSTL 形式のイテレータを返します。
警告 返されたイテレータ/参照は、次にハッシュに対して const でない関数を呼び出したとき、またはハッシュが破棄されたときに無効となります。
[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
ハッシュ内のkey とvalue を持つ項目を指すイテレータを返します。
ハッシュにそのような項目がない場合、この関数は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
ハッシュにkey とvalue の項目が含まれている場合は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 形式のイテレータを返します。
警告 返されたイテレータ/参照は、次にハッシュに対して非定数関数を呼び出したとき、あるいはハッシュが破棄されたときには無効になっていると考えるべきです。
[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() を返します。
ハッシュに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() とは異なります)。
新しい要素を指すイテレータを返します。
警告: 警告: 返されたイテレータや参照は、次にハッシュに対して非定数関数を呼び出したとき、あるいはハッシュが破棄されたときに無効となります。
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() を繰り返し実行することで、時間とメモリの浪費を避けることができる。
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で導入されました。
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
マップ内のすべてのキーを含むリストを返します。マップ内で複数回出現するキーは、返されるリストでは一度だけ出現します。
[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() を繰り返し実行することで、時間とメモリの浪費を避けることができる。
QList<T> QMultiHash::values(const Key &key) const
これはオーバーロードされた関数である。
key に関連付けられたすべての値のリストを、最近挿入されたものから最近挿入されなかっ たものまで返します。
QMultiHash<Key, T> QMultiHash::operator+(const QMultiHash<Key, T> &other) const
other のすべての項目に加え、このハッシュのすべての項目を含むハッシュを返します。 キーが両方のハッシュに共通する場合、結果のハッシュにはそのキーが複数回含まれます。
operator+=()も参照 。
QMultiHash<Key, T> &QMultiHash::operator+=(const QMultiHash<Key, T> &other)
other ハッシュのすべての項目をこのハッシュに挿入し、このハッシュへの参照を返します。
T &QMultiHash::operator[](const Key &key)
key に関連付けられた値を変更可能な参照として返します。
ハッシュにkey を持つ項目がない場合、この関数はデフォルトで構成された値を key を持つハッシュに挿入し、その参照を返します。
ハッシュにkey を持つ複数の項目が含まれる場合、この関数は最も最近挿入された値への参照を返します。
警告 返されたイテレータ/参照は、次にハッシュに対して非定数関数を呼び出したとき、またはハッシュが破棄されたときには無効になっていると考えるべきである。
関連する非メンバー
[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.の 商標です。その他すべての商標は、それぞれの所有者に帰属します。