QMultiMap Class

template <typename Key, typename T> class QMultiMap

QMultiMap 클래스는 여러 개의 동등한 키를 가진 연관 배열을 제공하는 템플릿 클래스입니다. 더 보기...

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

참고: 이 클래스의 모든 함수는 재진입됩니다.

공용 유형

공용 함수

QMultiMap()
(since 6.0) QMultiMap(QMap<Key, T> &&other)
(since 6.0) QMultiMap(const QMap<Key, T> &other)
QMultiMap(const std::multimap<Key, T> &other)
QMultiMap(std::initializer_list<std::pair<Key, T>> list)
QMultiMap(std::multimap<Key, T> &&other)
QMultiMap(const QMultiMap<Key, T> &other)
QMultiMap(QMultiMap<Key, T> &&other)
~QMultiMap()
(since 6.4) auto asKeyValueRange() &&
(since 6.4) auto asKeyValueRange() &
(since 6.4) auto asKeyValueRange() const &&
(since 6.4) auto asKeyValueRange() const &
QMultiMap<Key, T>::iterator begin()
QMultiMap<Key, T>::const_iterator begin() const
QMultiMap<Key, T>::const_iterator cbegin() const
QMultiMap<Key, T>::const_iterator cend() const
void clear()
QMultiMap<Key, T>::const_iterator constBegin() const
QMultiMap<Key, T>::const_iterator constEnd() const
QMultiMap<Key, T>::const_iterator constFind(const Key &key) const
QMultiMap<Key, T>::const_iterator constFind(const Key &key, const T &value) const
QMultiMap<Key, T>::const_key_value_iterator constKeyValueBegin() const
QMultiMap<Key, T>::const_key_value_iterator constKeyValueEnd() const
bool contains(const Key &key) const
bool contains(const Key &key, const T &value) const
QMultiMap<Key, T>::size_type count(const Key &key) const
QMultiMap<Key, T>::size_type count(const Key &key, const T &value) const
QMultiMap<Key, T>::size_type count() const
bool empty() const
QMultiMap<Key, T>::iterator end()
QMultiMap<Key, T>::const_iterator end() const
std::pair<QMultiMap<Key, T>::iterator, QMultiMap<Key, T>::iterator> equal_range(const Key &key)
std::pair<QMultiMap<Key, T>::const_iterator, QMultiMap<Key, T>::const_iterator> equal_range(const Key &key) const
QMultiMap<Key, T>::iterator erase(QMultiMap<Key, T>::const_iterator pos)
(since 6.0) QMultiMap<Key, T>::iterator erase(QMultiMap<Key, T>::const_iterator first, QMultiMap<Key, T>::const_iterator last)
QMultiMap<Key, T>::iterator find(const Key &key)
QMultiMap<Key, T>::const_iterator find(const Key &key) const
QMultiMap<Key, T>::const_iterator find(const Key &key, const T &value) const
T &first()
const T &first() const
const Key &firstKey() const
QMultiMap<Key, T>::iterator insert(const Key &key, const T &value)
QMultiMap<Key, T>::iterator insert(QMultiMap<Key, T>::const_iterator pos, const Key &key, const T &value)
bool isEmpty() const
Key key(const T &value, const Key &defaultKey = Key()) const
QMultiMap<Key, T>::key_iterator keyBegin() const
QMultiMap<Key, T>::key_iterator keyEnd() const
QMultiMap<Key, T>::key_value_iterator keyValueBegin()
QMultiMap<Key, T>::const_key_value_iterator keyValueBegin() const
QMultiMap<Key, T>::key_value_iterator keyValueEnd()
QMultiMap<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
QMultiMap<Key, T>::iterator lowerBound(const Key &key)
QMultiMap<Key, T>::const_iterator lowerBound(const Key &key) const
QMultiMap<Key, T>::size_type remove(const Key &key)
QMultiMap<Key, T>::size_type remove(const Key &key, const T &value)
(since 6.1) QMultiMap<Key, T>::size_type removeIf(Predicate pred)
QMultiMap<Key, T>::iterator replace(const Key &key, const T &value)
QMultiMap<Key, T>::size_type size() const
void swap(QMultiMap<Key, T> &other)
T take(const Key &key)
std::multimap<Key, T> toStdMultiMap() const &
QList<Key> uniqueKeys() const
QMultiMap<Key, T> &unite(QMultiMap<Key, T> &&other)
QMultiMap<Key, T> &unite(const QMultiMap<Key, T> &other)
QMultiMap<Key, T>::iterator upperBound(const Key &key)
QMultiMap<Key, T>::const_iterator upperBound(const Key &key) const
T value(const Key &key, const T &defaultValue = T()) const
QList<T> values() const
QList<T> values(const Key &key) const
QMultiMap<Key, T> &operator=(QMultiMap<Key, T> &&other)
QMultiMap<Key, T> &operator=(const QMultiMap<Key, T> &other)
(since 6.1) qsizetype erase_if(QMultiMap<Key, T> &map, Predicate pred)
bool operator!=(const QMultiMap<Key, T> &lhs, const QMultiMap<Key, T> &rhs)
QMultiMap<Key, T> operator+(const QMultiMap<Key, T> &lhs, const QMultiMap<Key, T> &rhs)
QMultiMap<Key, T> operator+=(QMultiMap<Key, T> &lhs, const QMultiMap<Key, T> &rhs)
QDataStream &operator<<(QDataStream &out, const QMultiMap<Key, T> &map)
bool operator==(const QMultiMap<Key, T> &lhs, const QMultiMap<Key, T> &rhs)
QDataStream &operator>>(QDataStream &in, QMultiMap<Key, T> &map)

상세 설명

QMultiMap<Key, T>는 Qt의 일반 컨테이너 클래스 중 하나입니다. (키, 값) 쌍을 저장하고 키별로 빠른 조회를 제공합니다.

QMultiMap과 QMultiHash 은 매우 유사한 기능을 제공합니다. 차이점은 다음과 같습니다:

  • QMultiHash 는 QMultiMap보다 평균적으로 빠른 조회를 제공합니다. (자세한 내용은 알고리즘 복잡성을 참조하세요.)
  • QMultiHash 을 반복할 때 항목은 임의로 정렬됩니다. QMultiMap을 사용하면 항목은 항상 키별로 정렬됩니다.
  • QMultiHash 의 키 유형은 연산자==() 및 전역 qHash(키) 함수를 제공해야 합니다. QMultiMap의 키 타입은 전체 순서를 지정하는 연산자<()를 제공해야 합니다. Qt 5.8.1부터는 기본 연산자<()가 총 순서를 제공하지 않더라도 포인터 타입을 키로 사용하는 것도 안전합니다.

다음은 QString 키와 int 값을 가진 QMultiMap 예제입니다:

QMultiMap<QString, int> multimap;

멀티 맵에 (키, 값) 쌍을 삽입하려면 insert()를 사용하면 됩니다:

multimap.insert("a", 1);
multimap.insert("b", 3);
multimap.insert("c", 7);
multimap.insert("c", -5);

그러면 다음 세 개의 (키, 값) 쌍이 QMultiMap에 삽입됩니다: ("a", 1), ("b", 3), ("c", 7), ("c", -5); 중복 키가 허용된다는 점에 유의하세요.

값을 조회하려면 find() 또는 value()를 사용합니다:

int num2 = multimap.value("a"); // 1
int num3 = multimap.value("thirteen"); // not found; 0
int num3 = 0;
auto it = multimap.constFind("b");
if (it != multimap.cend()) {
    num3 = it.value();
}

맵에 지정된 키를 가진 항목이 없는 경우 이 함수는 기본값으로 구성된 값을 반환합니다.

맵에 특정 키가 포함되어 있는지 확인하려면 contains()를 사용하세요:

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

// better:
auto it = multimap.find("TIMEOUT");
if (it != multimap.end())
    timeout = it.value();

지정된 키를 가진 항목이 없는 경우 두 번째 인수를 기본값으로 사용하는 value() 오버로드도 있습니다:

int timeout = multimap.value("TIMEOUT", 30);

QMultiMap에 저장된 모든 (키, 값) 쌍을 탐색하려면 이터레이터를 사용할 수 있습니다. QMultiMap은 Java 스타일 이터레이터 (QMultiMapIteratorQMutableMultiMapIterator)와 STL 스타일 이터레이터 (QMultiMap::const_iteratorQMultiMap::iterator)를 모두 제공합니다. 다음은 Java 스타일 이터레이터를 사용하여 QMultiMap<QString, int>을 반복하는 방법입니다:

QMultiMapIterator<QString, int> i(multimap);
while (i.hasNext()) {
    i.next();
    cout << qPrintable(i.key()) << ": " << i.value() << endl;
}

다음은 동일한 코드이지만 이번에는 STL 스타일 이터레이터를 사용합니다:

for (auto i = multimap.cbegin(), end = multimap.cend(); i != end; ++i)
    cout << qPrintable(i.key()) << ": " << i.value() << endl;

항목은 오름차순 키 순서로 순회됩니다.

QMultiMap은 키당 여러 값을 허용합니다. 맵에 이미 존재하는 키로 insert()를 호출하면 새 (키, 값) 쌍이 삽입됩니다. 예를 들어

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

단일 키에 대한 모든 값을 검색하려면 QList<T>를 반환하는 값(const Key &key)을 사용하면 됩니다:

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

동일한 키를 공유하는 항목은 가장 최근에 삽입된 항목부터 가장 최근에 삽입된 항목까지 사용할 수 있습니다. 또 다른 방법은 find()를 호출하여 키가 있는 첫 번째 항목에 대한 STL 스타일 이터레이터를 가져와서 거기서부터 반복하는 것입니다:

auto i = multimap.find("plenty");
while (i != map.end() && i.key() == "plenty") {
    cout << i.value() << endl;
    ++i;
}

// better:
auto [i, end] = multimap.equal_range("plenty");
while (i != end) {
    cout << i.value() << endl;
    ++i;
}

키가 아닌 맵에서 값만 추출해야 하는 경우 범위 기반 for를 사용할 수도 있습니다:

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

여러 가지 방법으로 멀티맵에서 항목을 제거할 수 있습니다. 한 가지 방법은 remove()를 호출하는 것입니다. 그러면 지정된 키가 있는 모든 항목이 제거됩니다. 또 다른 방법은 QMutableMultiMapIterator::remove()를 사용하는 것입니다. 또한 clear()를 사용하여 전체 맵을 지울 수도 있습니다.

unite(), 연산자+(), 연산자+=()를 사용하여 두 개의 멀티 맵을 병합할 수 있습니다. 예제:

QMultiMap<QString, int> map1, map2, map3;

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

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

map3 = map1 + map2;
// map3.size() == 3

QMultiMap의 키 및 값 데이터 유형은 할당 가능한 데이터 유형이어야 합니다. 이는 대부분의 데이터 유형에 적용되지만, 예를 들어 컴파일러는 QWidget 를 값으로 저장하는 대신 QWidget *를 저장하는 것을 허용하지 않습니다. 또한 QMultiMap의 키 유형은 연산자<()를 제공해야 합니다. QMap 는 이를 사용하여 항목을 정렬하고, x < y 이나 y < x 가 모두 참이 아닌 경우 두 키 xy 가 같다고 가정합니다.

예시:

#ifndef EMPLOYEE_H
#define EMPLOYEE_H

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

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

이 예에서는 직원들의 이름을 비교하는 것으로 시작합니다. 이름이 같으면 생년월일을 비교하여 동률을 깨뜨립니다.

QMultiMapIterator, QMutableMultiMapIterator, QMultiHash참조하세요 .

구성원 유형 문서

QMultiMap::ConstIterator

QMultiMap::const_iterator 의 Qt 스타일 동의어.

QMultiMap::Iterator

QMultiMap::iterator 의 Qt 스타일 동의어.

QMultiMap::const_key_value_iterator

QMultiMap::const_key_value_iterator typedef는 QMultiMap 에 대한 STL 스타일 이터레이터를 제공합니다.

QMultiMap::const_key_value_iterator는 QMultiMap::const_iterator 와 본질적으로 동일하지만, 연산자*()가 값 대신 키/값 쌍을 반환한다는 차이점이 있습니다.

QKeyValueIterator도 참조하세요 .

[alias] QMultiMap::difference_type

ptrdiff_t의 경우 Typedef. STL 호환성을 위해 제공됩니다.

[alias] QMultiMap::key_type

키에 Typedef. STL 호환성을 위해 제공됩니다.

QMultiMap::key_value_iterator

QMultiMap::key_value_iterator는 QMultiMap 에 대한 STL 스타일 이터레이터를 제공합니다.

QMultiMap::key_value_iterator는 QMultiMap::iterator 와 본질적으로 동일하지만, 연산자*()가 값 대신 키/값 쌍을 반환한다는 차이점이 있습니다.

QKeyValueIterator도 참조하세요 .

[alias] QMultiMap::mapped_type

STL 호환성을 위해 제공되는 T용 Typedef입니다.

[alias] QMultiMap::size_type

int. STL 호환성을 위해 제공됩니다.

멤버 함수 문서

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

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

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

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

이 멀티 맵을 키/값 쌍으로 반복할 수 있는 범위 객체를 반환합니다. 예를 들어, 이 범위 객체는 구조화된 바인딩 선언과 함께 범위 기반 for 루프에서 사용할 수 있습니다:

QMultiMap<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참조하세요 .

QMultiMap::QMultiMap()

빈 멀티 맵을 구축합니다.

clear()도 참조하세요 .

[explicit, since 6.0] QMultiMap::QMultiMap(QMap<Key, T> &&other)

other 이 공유된 경우 other 의 복사본으로 멀티 맵을 구성합니다. 그렇지 않으면 other 에서 요소를 이동하여 멀티 맵을 구성합니다.

이 함수는 Qt 6.0에 도입되었습니다.

[explicit, since 6.0] QMultiMap::QMultiMap(const QMap<Key, T> &other)

멀티 맵을 other 의 복사본으로 구성합니다.

이 함수는 Qt 6.0에 도입되었습니다.

[explicit] QMultiMap::QMultiMap(const std::multimap<Key, T> &other)

other 의 복사본을 생성합니다.

toStdMultiMap()도 참조하세요 .

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

이니셜라이저 목록에 있는 각 요소의 복사본으로 멀티 맵을 구성합니다 list.

[explicit] QMultiMap::QMultiMap(std::multimap<Key, T> &&other)

other 에서 이동하여 멀티 맵을 구축합니다.

toStdMultiMap()도 참조하세요 .

[default] QMultiMap::QMultiMap(const QMultiMap<Key, T> &other)

other 의 복사본을 생성합니다.

이 작업은 QMultiMap이 암시적으로 공유되기 때문에 상수 시간에 발생합니다. 따라서 함수에서 QMultiMap을 반환하는 속도가 매우 빠릅니다. 공유 인스턴스가 수정되면 복사(쓰기 시 복사)되므로 선형 시간이 걸립니다.

operator=()도 참조하세요 .

[default] QMultiMap::QMultiMap(QMultiMap<Key, T> &&other)

Move - QMultiMap 인스턴스를 생성하여 other 이 가리키고 있던 것과 동일한 객체를 가리키도록 합니다.

[default] QMultiMap::~QMultiMap()

멀티 맵을 삭제합니다. 멀티 맵의 값에 대한 참조와 이 멀티 맵에 대한 모든 이터레이터가 무효화됩니다.

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

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

constBegin() 및 end()도 참조하세요 .

QMultiMap<Key, T>::const_iterator QMultiMap::begin() const

과부하가 걸린 기능입니다.

QMultiMap<Key, T>::const_iterator QMultiMap::cbegin() const

멀티 맵의 첫 번째 항목을 가리키는 상수 STL 스타일 이터레이터를 반환합니다.

begin() 및 cend()도 참조하세요 .

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

멀티 맵의 마지막 항목 뒤에 있는 가상의 항목을 가리키는 상수 STL 스타일 이터레이터를 반환합니다.

cbegin() 및 end()도 참조하세요 .

void QMultiMap::clear()

멀티 맵에서 모든 항목을 제거합니다.

remove()도 참조하세요 .

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

멀티 맵의 첫 번째 항목을 가리키는 상수 STL 스타일 이터레이터를 반환합니다.

begin() 및 constEnd()도 참조하세요 .

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

멀티 맵의 마지막 항목 뒤에 있는 가상의 항목을 가리키는 상수 STL 스타일 이터레이터를 반환합니다.

constBegin() 및 end()도 참조하세요 .

QMultiMap<Key, T>::const_iterator QMultiMap::constFind(const Key &key) const

멀티 맵에서 키가 key 인 항목을 가리키는 const 이터레이터를 반환합니다.

멀티 맵에 키가 key 인 항목이 없는 경우 이 함수는 constEnd()을 반환합니다.

find() 및 QMultiMap::constFind()도 참조하세요 .

QMultiMap<Key, T>::const_iterator QMultiMap::constFind(const Key &key, const T &value) const

맵에서 key 키와 value 값을 가진 항목을 가리키는 이터레이터를 반환합니다.

맵에 해당 항목이 없는 경우 이 함수는 constEnd()를 반환합니다.

QMap::constFind()도 참조하세요 .

QMultiMap<Key, T>::const_key_value_iterator QMultiMap::constKeyValueBegin() const

멀티 맵의 첫 번째 항목을 가리키는 상수 STL 스타일 이터레이터를 반환합니다.

keyValueBegin()도 참조하세요 .

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

멀티 맵의 마지막 항목 뒤에 있는 가상의 항목을 가리키는 상수 STL 스타일 이터레이터를 반환합니다.

constKeyValueBegin()도 참조하세요 .

bool QMultiMap::contains(const Key &key) const

멀티 맵에 키가 key 인 항목이 포함되어 있으면 true 을 반환하고, 그렇지 않으면 false 을 반환합니다.

count()도 참조하세요 .

bool QMultiMap::contains(const Key &key, const T &value) const

멀티 맵에 키 key 및 값 value 이 있는 항목이 포함된 경우 true 을 반환하고, 그렇지 않으면 false 을 반환합니다.

count()도 참조하세요 .

QMultiMap<Key, T>::size_type QMultiMap::count(const Key &key) const

key 키와 연관된 항목 수를 반환합니다.

contains() 및 QMultiMap::count()도 참조하세요 .

QMultiMap<Key, T>::size_type QMultiMap::count(const Key &key, const T &value) const

key 및 값 value 을 가진 항목의 수를 반환합니다.

contains() 및 QMultiMap::count()도 참조하세요 .

QMultiMap<Key, T>::size_type QMultiMap::count() const

이 함수는 과부하된 함수입니다.

size()와 동일합니다.

bool QMultiMap::empty() const

이 함수는 STL 호환성을 위해 제공됩니다. isEmpty ()와 동일하며, 맵이 비어 있으면 참을 반환하고 그렇지 않으면 거짓을 반환합니다.

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

멀티 맵의 마지막 항목 뒤에 있는 가상의 항목을 가리키는 STL 스타일 이터레이터를 반환합니다.

begin() 및 constEnd()도 참조하세요 .

QMultiMap<Key, T>::const_iterator QMultiMap::end() const

과부하가 걸린 기능입니다.

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

key 에 저장된 값의 범위를 구분하는 한 쌍의 이터레이터( [first, second))를 반환합니다.

std::pair<QMultiMap<Key, T>::const_iterator, QMultiMap<Key, T>::const_iterator> QMultiMap::equal_range(const Key &key) const

과부하가 걸린 기능입니다.

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

멀티 맵에서 반복자 pos 가 가리키는 (키, 값) 쌍을 제거하고 맵의 다음 항목으로 반복자를 반환합니다.

참고: 이터레이터 pos 는 유효하고 역참조 가능해야 합니다.

remove()도 참조하세요 .

[since 6.0] QMultiMap<Key, T>::iterator QMultiMap::erase(QMultiMap<Key, T>::const_iterator first, QMultiMap<Key, T>::const_iterator last)

멀티 맵에서 반복자 범위 [first, last)가 가리키는 (키, 값) 쌍을 제거합니다. 마지막으로 제거된 요소 다음에 있는 멀티 맵의 항목에 대한 이터레이터를 반환합니다.

참고: [first, last) 범위는 *this 에서 유효한 범위여야 합니다.

이 함수는 Qt 6.0에 도입되었습니다.

remove()도 참조하세요 .

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

멀티 맵에서 키가 key 인 항목을 가리키는 이터레이터를 반환합니다.

멀티 맵에 key 키가 있는 항목이 없는 경우 이 함수는 end()을 반환합니다.

맵에 key 키가 있는 항목이 여러 개 포함된 경우 이 함수는 가장 최근에 삽입된 값을 가리키는 반복자를 반환합니다. 다른 값은 이터레이터를 증가시켜 액세스할 수 있습니다. 예를 들어 다음은 동일한 키를 가진 모든 항목을 반복하는 코드입니다:

auto i = multimap.find("plenty");
while (i != map.end() && i.key() == "plenty") {
    cout << i.value() << endl;
    ++i;
}

// better:
auto [i, end] = multimap.equal_range("plenty");
while (i != end) {
    cout << i.value() << endl;
    ++i;
}

constFind(), value(), values(), lowerBound() 및 upperBound()도 참조하세요 .

QMultiMap<Key, T>::const_iterator QMultiMap::find(const Key &key) const

과부하가 걸린 기능입니다.

QMultiMap<Key, T>::const_iterator QMultiMap::find(const Key &key, const T &value) const

이 함수는 오버로드된 함수입니다.

지도에서 지정된 keyvalue 을 가진 항목을 가리키는 상수 이터레이터를 반환합니다.

맵에 해당 항목이 없는 경우 end()를 반환합니다.

맵에 지정된 key 이 있는 항목이 여러 개 포함된 경우 이 함수는 가장 최근에 삽입된 값을 가리키는 const 이터레이터를 반환합니다.

T &QMultiMap::first()

멀티 맵의 첫 번째 값, 즉 가장 작은 키에 매핑된 값에 대한 참조를 반환합니다. 이 함수는 멀티 맵이 비어 있지 않다고 가정합니다.

공유되지 않은 경우(또는 const 버전이 호출된 경우) 상수 시간에 실행됩니다.

last(), firstKey() 및 isEmpty()도 참조하세요 .

const T &QMultiMap::first() const

과부하가 걸린 기능입니다.

const Key &QMultiMap::firstKey() const

멀티 맵에서 가장 작은 키에 대한 참조를 반환합니다. 이 함수는 멀티 맵이 비어 있지 않다고 가정합니다.

이 함수는 상수 시간에 실행됩니다.

lastKey(), first(), keyBegin() 및 isEmpty()도 참조하세요 .

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

key 키와 value 값으로 새 항목을 삽입합니다.

맵에 이미 동일한 키를 가진 항목이 있는 경우 이 함수는 단순히 새 항목을 만듭니다. (이 동작은 기존 항목의 값을 덮어쓰는 replace()와는 다릅니다.)

새 요소를 가리키는 이터레이터를 반환합니다.

replace()도 참조하세요 .

QMultiMap<Key, T>::iterator QMultiMap::insert(QMultiMap<Key, T>::const_iterator pos, const Key &key, const T &value)

이 함수는 과부하된 함수입니다.

key 및 값 value, 힌트 pos 를 사용하여 삽입할 위치를 제안하는 새 항목을 삽입합니다.

constBegin()가 힌트로 사용되는 경우 key 이 멀티 맵의 어떤 키보다 작다는 것을 나타내며 constEnd()는 key 이 멀티 맵의 어떤 키보다 (엄격하게) 크다는 것을 나타냅니다. 그렇지 않으면 힌트가 조건(pos - 1)을 충족해야 합니다.key() < key <= 위치.key(). 힌트 pos 가 잘못되면 무시되고 일반 삽입이 수행됩니다.

힌트가 맞고 멀티 맵이 공유되지 않은 경우 삽입은 상각된 상수 시간으로 실행됩니다.

맵에 이미 동일한 키를 가진 항목이 있는 경우 이 함수는 단순히 새 항목을 만듭니다.

정렬된 데이터에서 멀티 맵을 만들 때 가장 큰 키를 먼저 삽입하는 constBegin()를 사용하는 것이 constEnd()를 사용하여 정렬된 순서대로 삽입하는 것보다 빠릅니다. constEnd() - 1(힌트가 유효한지 확인하는 데 필요한)은 로그 시간이 필요하기 때문입니다.

새 요소를 가리키는 이터레이터를 반환합니다.

참고: 힌트에 주의하세요. 이전 공유 인스턴스에서 이터레이터를 제공하면 충돌이 발생할 수 있으며, 멀티 맵과 pos 멀티 맵이 모두 자동으로 손상될 위험도 있습니다.

bool QMultiMap::isEmpty() const

멀티 맵에 항목이 없는 경우 true 을 반환하고, 그렇지 않으면 false를 반환합니다.

size()도 참조하세요 .

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

이 함수는 오버로드된 함수입니다.

값이 value 인 첫 번째 키를 반환하거나 멀티 맵에 값이 value 인 항목이 없는 경우 defaultKey 을 반환합니다. defaultKey 이 제공되지 않으면 이 함수는 기본적으로 구성된 키를 반환합니다.

QMultiMap 의 내부 데이터 구조는 값이 아닌 키별로 빠르게 조회하도록 최적화되어 있기 때문에 이 함수는 느릴 수 있습니다(선형 시간).

value() 및 keys()도 참조하세요 .

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

멀티 맵의 첫 번째 키를 가리키는 상수 STL 스타일 이터레이터를 반환합니다.

keyEnd() 및 firstKey()도 참조하세요 .

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

멀티 맵의 마지막 키 뒤에 있는 가상의 항목을 가리키는 상수 STL 스타일 이터레이터를 반환합니다.

keyBegin() 및 lastKey()도 참조하세요 .

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

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

keyValueEnd()도 참조하세요 .

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

멀티 맵의 첫 번째 항목을 가리키는 상수 STL 스타일 이터레이터를 반환합니다.

keyValueEnd()도 참조하세요 .

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

멀티 맵의 마지막 항목 뒤에 있는 가상의 항목을 가리키는 STL 스타일 이터레이터를 반환합니다.

keyValueBegin()도 참조하세요 .

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

멀티 맵의 마지막 항목 뒤에 있는 가상의 항목을 가리키는 상수 STL 스타일 이터레이터를 반환합니다.

keyValueBegin()도 참조하세요 .

QList<Key> QMultiMap::keys() const

멀티 맵의 모든 키가 오름차순으로 포함된 목록을 반환합니다. 멀티 맵에서 여러 번 나타나는 키는 목록에서도 여러 번 나타납니다.

이 순서는 values()에서 사용하는 순서와 동일하게 보장됩니다.

이 함수는 선형 시간으로 새 목록을 만듭니다. keyBegin ()에서 keyEnd()로 반복하면 시간과 메모리 사용을 피할 수 있습니다.

values() 및 key()도 참조하세요 .

QList<Key> QMultiMap::keys(const T &value) const

이 함수는 오버로드된 함수입니다.

value 값과 관련된 모든 키가 오름차순으로 포함된 목록을 반환합니다.

QMultiMap 의 내부 데이터 구조는 값이 아닌 키별로 빠르게 조회하도록 최적화되어 있기 때문에 이 함수는 느릴 수 있습니다(선형 시간).

T &QMultiMap::last()

멀티 맵의 마지막 값, 즉 가장 큰 키에 매핑된 값에 대한 참조를 반환합니다. 이 함수는 맵이 비어 있지 않다고 가정합니다.

공유되지 않은 경우(또는 const 버전이 호출된 경우) 로그 시간으로 실행됩니다.

first(), lastKey() 및 isEmpty()도 참조하세요 .

const T &QMultiMap::last() const

과부하가 걸린 기능입니다.

const Key &QMultiMap::lastKey() const

멀티 맵에서 가장 큰 키에 대한 참조를 반환합니다. 이 함수는 멀티 맵이 비어 있지 않다고 가정합니다.

이 함수는 로그 시간으로 실행됩니다.

firstKey(), last(), keyEnd() 및 isEmpty()도 참조하세요 .

QMultiMap<Key, T>::iterator QMultiMap::lowerBound(const Key &key)

지도에서 key 키를 가진 첫 번째 항목을 가리키는 이터레이터를 반환합니다. 맵에 key 키가 있는 항목이 없는 경우 이 함수는 더 큰 키를 가진 가장 가까운 항목에 대한 반복자를 반환합니다.

예시:

QMultiMap<int, QString> multimap;
multimap.insert(1, "one");
multimap.insert(5, "five");
multimap.insert(5, "five (2)");
multimap.insert(10, "ten");

multimap.lowerBound(0);      // returns iterator to (1, "one")
multimap.lowerBound(1);      // returns iterator to (1, "one")
multimap.lowerBound(2);      // returns iterator to (5, "five")
multimap.lowerBound(5);      // returns iterator to (5, "five")
multimap.lowerBound(6);      // returns iterator to (10, "ten")
multimap.lowerBound(10);     // returns iterator to (10, "ten")
multimap.lowerBound(999);    // returns end()

맵에 키가 key 인 항목이 여러 개 있는 경우 이 함수는 가장 최근에 삽입된 값을 가리키는 반복자를 반환합니다. 다른 값은 이터레이터를 증가시켜 액세스할 수 있습니다. 예를 들어 다음은 동일한 키를 가진 모든 항목을 반복하는 코드입니다:

QMap<QString, int> multimap;
...
QMap<QString, int>::const_iterator i = multimap.lowerBound("HDR");
QMap<QString, int>::const_iterator upperBound = multimap.upperBound("HDR");
while (i != upperBound) {
    cout << i.value() << endl;
    ++i;
}

upperBound() 및 find()도 참조하세요 .

QMultiMap<Key, T>::const_iterator QMultiMap::lowerBound(const Key &key) const

과부하가 걸린 기능입니다.

QMultiMap<Key, T>::size_type QMultiMap::remove(const Key &key)

멀티 맵에서 key 키가 있는 모든 항목을 제거합니다. 제거된 항목의 수를 반환합니다.

clear() 및 take()도 참조하세요 .

QMultiMap<Key, T>::size_type QMultiMap::remove(const Key &key, const T &value)

멀티 맵에서 key 키와 value 값을 가진 모든 항목을 제거합니다. 제거된 항목의 수를 반환합니다.

clear() 및 take()도 참조하세요 .

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

pred 술어가 참을 반환하는 모든 요소를 멀티 맵에서 제거합니다.

이 함수는 QMultiMap<Key, T>::iterator 타입의 인수를 받거나 std::pair<const Key &, T &> 타입의 인수를 받는 술어를 지원합니다.

제거된 엘리먼트가 있으면 그 수를 반환합니다.

이 함수는 Qt 6.1에 도입되었습니다.

clear() 및 take()도 참조하십시오 .

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

키가 key 이고 값이 value 인 새 항목을 삽입합니다.

키가 key 인 항목이 이미 있는 경우 해당 항목의 값은 value 으로 바뀝니다.

key 키를 가진 항목이 여러 개 있는 경우 가장 최근에 삽입된 항목의 값이 value 으로 바뀝니다.

새/업데이트된 요소를 가리키는 이터레이터를 반환합니다.

insert()도 참조하세요 .

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

멀티 맵에서 (키, 값) 쌍의 수를 반환합니다.

isEmpty() 및 count()도 참조하세요 .

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

이 멀티 맵을 other 로 바꿉니다. 이 작업은 매우 빠르며 실패하지 않습니다.

T QMultiMap::take(const Key &key)

멀티 맵에서 key 키가 있는 항목을 제거하고 해당 항목과 연관된 값을 반환합니다.

항목이 멀티 맵에 존재하지 않으면 이 함수는 기본적으로 구성된 값을 반환합니다. 맵에 key 에 대한 항목이 여러 개 있는 경우 가장 최근에 삽입된 항목만 제거되어 반환됩니다.

반환 값을 사용하지 않는 경우에는 remove()를 사용하는 것이 더 효율적입니다.

remove()도 참조하세요 .

std::multimap<Key, T> QMultiMap::toStdMultiMap() const &

이에 해당하는 STL 멀티 맵을 반환합니다 QMultiMap.

QList<Key> QMultiMap::uniqueKeys() const

맵의 모든 키가 오름차순으로 포함된 목록을 반환합니다. 맵에서 여러 번 나타나는 키는 반환된 목록에서 한 번만 나타납니다.

QMultiMap<Key, T> &QMultiMap::unite(QMultiMap<Key, T> &&other)

other 맵의 모든 항목을 이 맵으로 이동합니다. 키가 두 맵에 공통인 경우 결과 맵에 해당 키가 여러 번 포함됩니다.

other 을 공유하면 항목이 대신 복사됩니다.

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

other 맵의 모든 항목을 이 맵에 삽입합니다. 키가 두 맵에 공통인 경우 결과 맵에 해당 키가 여러 번 포함됩니다.

QMultiMap<Key, T>::iterator QMultiMap::upperBound(const Key &key)

맵에서 키가 key 인 마지막 항목 바로 뒤에 있는 항목을 가리키는 이터레이터를 반환합니다. 맵에 key 키가 있는 항목이 없는 경우 이 함수는 더 큰 키를 가진 가장 가까운 항목에 대한 반복자를 반환합니다.

예시:

QMultiMap<int, QString> multimap;
multimap.insert(1, "one");
multimap.insert(5, "five");
multimap.insert(5, "five (2)");
multimap.insert(10, "ten");

multimap.upperBound(0);      // returns iterator to (1, "one")
multimap.upperBound(1);      // returns iterator to (5, "five")
multimap.upperBound(2);      // returns iterator to (5, "five")
multimap.lowerBound(5);      // returns iterator to (5, "five (2)")
multimap.lowerBound(6);      // returns iterator to (10, "ten")
multimap.upperBound(10);     // returns end()
multimap.upperBound(999);    // returns end()

lowerBound() 및 find()도 참조하세요 .

QMultiMap<Key, T>::const_iterator QMultiMap::upperBound(const Key &key) const

과부하가 걸린 기능입니다.

T QMultiMap::value(const Key &key, const T &defaultValue = T()) const

key 키와 연관된 값을 반환합니다.

멀티 맵에 key 키가 있는 항목이 없는 경우 이 함수는 defaultValue 을 반환합니다. defaultValue 을 지정하지 않으면 이 함수는 기본적으로 구성된 값을 반환합니다. 멀티 맵에 key 에 대한 항목이 여러 개 있는 경우 가장 최근에 삽입된 항목의 값이 반환됩니다.

key(), values() 및 contains()도 참조하세요 .

QList<T> QMultiMap::values() const

맵의 모든 값이 포함된 목록을 키의 오름차순으로 반환합니다. 키가 여러 값과 연관된 경우 가장 최근에 삽입된 값뿐만 아니라 모든 값이 목록에 포함됩니다.

keys() 및 value()도 참조하세요 .

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

가장 최근에 삽입된 값부터 가장 최근에 삽입되지 않은 값까지 key 키와 관련된 모든 값이 포함된 목록을 반환합니다.

keys() 및 value()도 참조하세요 .

[default] QMultiMap<Key, T> &QMultiMap::operator=(QMultiMap<Key, T> &&other)

이동-이 other 인스턴스를 QMultiMap 인스턴스에 할당합니다.

[default] QMultiMap<Key, T> &QMultiMap::operator=(const QMultiMap<Key, T> &other)

이 멀티 맵에 other 을 할당하고 이 멀티 맵에 대한 참조를 반환합니다.

관련 비회원

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

다중 맵 map 에서 pred 술어가 참을 반환하는 모든 요소를 제거합니다.

이 함수는 QMultiMap<Key, T>::iterator 타입의 인수를 받거나 std::pair<const Key &, T &> 타입의 인수를 받는 술어를 지원합니다.

제거된 엘리먼트가 있으면 그 수를 반환합니다.

이 함수는 Qt 6.1에 도입되었습니다.

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

lhsrhs 과 같지 않으면 true 을 반환하고, 그렇지 않으면 false 을 반환합니다.

두 개의 멀티 맵은 동일한 (키, 값) 쌍을 동일한 순서로 포함하는 경우 동일한 것으로 간주됩니다(중복 키의 경우 중요).

이 함수를 구현하려면 operator==() 을 구현할 키와 값 유형이 필요합니다.

operator==()도 참조하세요 .

template <typename Key, typename T> QMultiMap<Key, T> operator+(const QMultiMap<Key, T> &lhs, const QMultiMap<Key, T> &rhs)

lhs 맵의 모든 항목과 rhs 맵의 모든 항목이 포함된 맵을 반환합니다. 키가 두 맵에 공통인 경우 결과 맵에 해당 키가 여러 번 포함됩니다.

operator+=()도 참조하세요 .

template <typename Key, typename T> QMultiMap<Key, T> operator+=(QMultiMap<Key, T> &lhs, const QMultiMap<Key, T> &rhs)

rhs 맵의 모든 항목을 lhs 맵에 삽입하고 결과 맵을 반환합니다.

insert() 및 operator+()도 참조하세요 .

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

멀티 맵 map 을 작성하여 out 을 스트리밍합니다.

이 함수는 operator<<() 을 구현하기 위해 키 및 값 유형이 필요합니다.

QDataStream 연산자의 형식을참조하십시오 .

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

lhsrhs 과 같으면 true 을 반환하고, 그렇지 않으면 false 를 반환합니다.

두 개의 멀티 맵이 동일한 (키, 값) 쌍을 동일한 순서로 포함하는 경우 동일한 것으로 간주됩니다(중복 키의 경우 중요).

이 함수를 구현하려면 키와 값 유형이 operator==().

operator!=()도 참조하세요 .

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

in 스트림에서 map 로 맵을 읽습니다.

이 함수는 operator>>() 을 구현하기 위한 키 및 값 유형이 필요합니다.

QDataStream 연산자의 형식을참조하십시오 .

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