이 페이지에서

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의 제네릭 컨테이너 클래스 중 하나로, 여기서 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는 operator[]를 제공하지 않습니다. 특정 키를 가진 가장 최근에 삽입된 항목에 접근하려면 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 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*()가 값 대신 키/값 쌍을 반환한다는 점이 다릅니다.

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
}

이 방법으로 얻은 키와 값은 모두 해시 내의 해당 항목에 대한 참조라는 점에 유의하십시오. 특히, 값을 변경하면 해시 자체가 수정됩니다.

경고: 반환된 반복자/참조는 해시에 대해 non-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

해시의 첫 번째 항목을 가리키는 const STL 스타일의 이터레이터를 반환합니다.

경고: 반환된 이터레이터/참조는 해시에 대해 비const 함수를 다음에 호출할 때나 해시가 소멸될 때 무효화된 것으로 간주되어야 합니다.

begin() 및 cend()도 참조하십시오 .

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

해시의 마지막 항목 다음에 있는 가상의 항목을 가리키는 const STL 스타일의 이터레이터를 반환합니다.

경고: 반환된 이터레이터/참조는 해시에 대해 비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

해시의 첫 번째 항목을 가리키는 const STL 스타일의 이터레이터를 반환합니다.

경고: 반환된 이터레이터/참조는 해시에 대해 비const 함수를 다음에 호출할 때나 해시가 소멸될 때 무효화된 것으로 간주되어야 합니다.

begin() 및 constEnd()도 참조하십시오 .

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

해시의 마지막 항목 다음에 있는 가상의 항목을 가리키는 const STL 스타일의 이터레이터를 반환합니다.

경고: 반환된 이터레이터/참조는 해시에 대해 비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

해시의 첫 번째 항목을 가리키는 const STL 스타일의 이터레이터를 반환합니다.

경고: 반환된 이터레이터/참조는 해시에 대해 const가 아닌 함수를 다음에 호출할 때나 해시가 소멸될 때 무효화된 것으로 간주해야 합니다.

keyValueBegin()도 참조하십시오 .

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

해시의 마지막 항목 다음에 있는 가상의 항목을 가리키는 const STL 스타일의 이터레이터를 반환합니다.

경고: 반환된 이터레이터/참조는 해시에 대해 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

경고: 반환된 이터레이터/참조는 해시에 대해 non-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

해시의 첫 번째 키를 가리키는 const STL 스타일의 이터레이터를 반환합니다.

경고: 반환된 이터레이터/참조는 해시에 대해 비const 함수를 다음에 호출할 때나 해시가 소멸될 때 무효화된 것으로 간주해야 합니다.

keyEnd()도 참조하십시오 .

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

해시 내 마지막 키 다음에 있는 가상의 항목을 가리키는 const STL 스타일의 이터레이터를 반환합니다.

경고: 반환된 이터레이터/참조는 해시에서 비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

해시의 첫 번째 항목을 가리키는 const STL 스타일의 이터레이터를 반환합니다.

경고: 반환된 이터레이터/참조는 해시에 대해 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

해시의 마지막 항목 바로 뒤에 있는 가상의 항목을 가리키는 const STL 스타일의 이터레이터를 반환합니다.

경고: 반환된 이터레이터/참조는 해시에 대해 비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 조건식이 참을 반환하는 모든 요소를 멀티 해시에서 제거합니다.

이 함수는 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 로 대체됩니다.

새로 추가되거나 업데이트된 요소를 가리키는 이터레이터를 반환합니다.

경고: 반환된 이터레이터/참조는 해시에 대해 non-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

맵에 포함된 모든 키를 포함하는 목록을 반환합니다. 맵에서 여러 번 나타나는 키는 반환된 목록에서는 한 번만 나타납니다.

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

해시에 포함된 모든 값을 임의의 순서로 담은 리스트를 반환합니다. 하나의 키에 여러 값이 연결되어 있는 경우, 가장 최근에 삽입된 값뿐만 아니라 해당 키의 모든 값이 리스트에 포함됩니다.

이 순서는 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 을 가진 항목이 여러 개 포함된 경우, 이 함수는 가장 최근에 삽입된 값에 대한 참조를 반환합니다.

경고: 반환된 이터레이터/참조는 해시에 대해 non-const 함수를 다음에 호출할 때나 해시가 소멸될 때 무효화된 것으로 간주되어야 합니다.

insert() 및 value()도 참조하십시오 .

관련 비회원 함수

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

pred 조건식이 참을 반환하는 모든 요소를 멀티 해시 hash 에서 제거합니다.

이 함수는 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 를 반환합니다.

두 멀티해시는 동일한 (키, 값) 쌍을 포함할 경우 서로 동일한 것으로 간주됩니다.

이 함수를 사용하려면 value 타입이 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`를 반환합니다.

두 멀티해시가 동일한 (키, 값) 쌍을 포함하는 경우 서로 동일한 것으로 간주됩니다.

이 함수를 사용하려면 값 유형이 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.