이 페이지에서

QMutableMultiMapIterator Class

template <typename Key, typename T> class QMutableMultiMapIterator

QMutableMultiMapIterator 클래스는 QMultiMap 에 대한 Java 스타일의 비정수(non-const) 이터레이터를 제공합니다. 더 보기...

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

공개 함수

QMutableMultiMapIterator(QMultiMap<Key, T> &map)
bool findNext(const T &value)
bool findPrevious(const T &value)
bool hasNext() const
bool hasPrevious() const
const Key &key() const
QMutableMultiMapIterator<Key, T>::Item next()
QMutableMultiMapIterator<Key, T>::Item peekNext() const
QMutableMultiMapIterator<Key, T>::Item peekPrevious() const
QMutableMultiMapIterator<Key, T>::Item previous()
void remove()
void setValue(const T &value)
void toBack()
void toFront()
const T &value() const
T &value()
QMutableMultiMapIterator<Key, T> &operator=(QMultiMap<Key, T> &map)

상세 설명

QMultiMap 이 맵은 Java 스타일의 반복자와 STL 스타일의 반복자를 모두 지원합니다. STL 스타일의 반복자가 더 효율적이므로 이를 우선적으로 사용해야 합니다. 템플릿 매개변수 ` Key `는 맵의 키 유형을 지정하며, ` T `는 값 유형을 지정합니다.

QMutableMultiMapIterator<Key, T>를 사용하면 QMultiMap 을 순회하면서 맵을 수정할 수 있습니다. 맵을 수정하지 않으려는 경우(또는 QMultiMap 이 const인 경우)에는 대신 약간 더 빠른 QMultiMapIterator 를 사용하십시오.

QMutableMultiMapIterator 생성자는 QMultiMap 를 인수로 받습니다. 생성 후, 이터레이터는 맵의 맨 처음(첫 번째 항목 앞)에 위치합니다. 모든 요소를 순차적으로 반복하는 방법은 다음과 같습니다:

QMultiMap<int, QWidget*> multimap;
//...
QMutableMultiMapIterator<int, QWidget*> i(multimap);
while (i.hasNext()) {
    i.next();
    qDebug() << i.key() << ": " << i.value();
}

next() 함수는 맵의 다음 항목을 반환하고 이터레이터를 다음 항목으로 이동시킵니다. key() 및 value() 함수는 건너뛴 마지막 항목의 키와 값을 반환합니다.

STL 스타일의 반복자와는 달리, Java 스타일의 반복자는 항목을 직접 가리키기보다는 항목들 사이를 가리킵니다. next()을 처음 호출하면 반복자가 첫 번째 항목과 두 번째 항목 사이의 위치로 이동하고 첫 번째 항목을 반환하며, next()을 두 번째로 호출하면 반복자가 두 번째 항목과 세 번째 항목 사이의 위치로 이동하는 식입니다.

항목 A, B, C, D 사이의 이터레이터 위치

다음은 요소를 역순으로 반복하는 방법입니다:

QMutableMultiMapIterator<int, QWidget*> i(multimap);
i.toBack();
while (i.hasPrevious()) {
    i.previous();
    qDebug() << i.key() << ": " << i.value();
}

특정 값이 나타나는 모든 위치를 찾으려면, 루프 내에서 ` findNext()` 또는 ` findPrevious()`를 사용하십시오. 예를 들어:

QMutableMultiMapIterator<int, QWidget*> i(multimap);
while (i.findNext(widget)) {
    qDebug() << "Found widget " << widget << " under key "
           << i.key();
}

맵을 순회하면서 항목을 제거하려면 remove()를 사용하십시오. 항목의 값을 수정하려면 setValue()를 사용하십시오.

예시:

QMutableMultiMapIterator<QString, QString> i(multimap);
while (i.hasNext()) {
    i.next();
    if (i.key() == i.value())
        i.remove();
}

이 예제는 키와 값이 동일한 모든 (키, 값) 쌍을 제거합니다.

주어진 맵에 대해 한 번에 하나의 가변 이터레이터만 활성화될 수 있습니다. 또한, 이터레이터가 활성화된 동안에는 (이터레이터를 통하지 않고) 맵에 직접 변경을 가해서는 안 됩니다. 이는 이터레이터를 무효화시켜 정의되지 않은 동작을 유발할 수 있기 때문입니다.

QMultiMapIterator 및 QMultiMap::iterator도 참조하십시오 .

멤버 함수 문서

QMutableMultiMapIterator::QMutableMultiMapIterator(QMultiMap<Key, T> &map)

map 를 순회하기 위한 이터레이터를 생성합니다. 이터레이터는 맵의 맨 앞(첫 번째 항목 이전)에 위치하도록 설정됩니다.

operator=()도 참조하십시오 .

bool QMutableMultiMapIterator::findNext(const T &value)

현재 반복자 위치부터 앞으로 이동하며 ` value `를 검색합니다. 값이 ` value `인 (key, value) 쌍이 발견되면 ` true `을 반환하고, 그렇지 않으면 ` false`을 반환합니다.

호출 후, value 가 발견된 경우 이터레이터는 일치하는 항목 바로 뒤 위치로 이동하며, 그렇지 않은 경우 이터레이터는 컨테이너의 끝 위치로 이동합니다.

findPrevious()도 참조하십시오 .

bool QMutableMultiMapIterator::findPrevious(const T &value)

현재 반복자 위치에서 역방향으로 ` value `를 검색합니다. 값이 ` value `인 (key, value) 쌍이 발견되면 ` true `를 반환하고, 그렇지 않으면 ` false`를 반환합니다.

호출 후, value 가 발견된 경우 이터레이터는 일치하는 항목 바로 앞에 위치하게 되며, 그렇지 않은 경우 이터레이터는 컨테이너의 맨 앞에 위치하게 됩니다.

findNext()도 참조하십시오 .

bool QMutableMultiMapIterator::hasNext() const

이터레이터 앞쪽에 항목이 하나 이상 있는 경우, 즉 이터레이터가 컨테이너의 맨 뒤에 있지 않은 경우 true 를 반환하고, 그렇지 않은 경우 false 를 반환합니다.

hasPrevious() 및 next()도 참조하십시오 .

bool QMutableMultiMapIterator::hasPrevious() const

이터레이터 뒤에 항목이 하나 이상 있는 경우, 즉 이터레이터가 컨테이너의 맨 앞에 있지 않은 경우 true 를 반환하고, 그렇지 않은 경우 false 를 반환합니다.

hasNext() 및 previous()도 참조하십시오 .

const Key &QMutableMultiMapIterator::key() const

next(), previous(), findNext(), findPrevious() 중 하나의 탐색 함수를 사용하여 건너뛴 마지막 항목의 키를 반환합니다.

next() 또는 findNext()를 호출한 후에는, key()이 peekPrevious()과 동일하게 동작합니다.key(). previous() 또는 findPrevious()를 호출한 후에는, key()이 peekNext()과 동일하게 동작합니다.key().

value()도 참조하십시오 .

QMutableMultiMapIterator<Key, T>::Item QMutableMultiMapIterator::next()

다음 항목을 반환하고 이터레이터를 한 칸씩 앞으로 이동시킵니다.

반환된 값에 대해 ` key()`를 호출하여 항목의 키를 얻고, ` value()`를 호출하여 값을 얻습니다.

컨테이너의 맨 뒤에 위치한 이터레이터에서 이 함수를 호출하면 정의되지 않은 결과가 발생합니다.

hasNext(), peekNext(), previous()도 참조하십시오 .

QMutableMultiMapIterator<Key, T>::Item QMutableMultiMapIterator::peekNext() const

이터레이터를 이동시키지 않고 다음 항목에 대한 참조를 반환합니다.

반환된 값에 대해 ` key()`를 호출하면 항목의 키를, ` value()`를 호출하면 값을 얻을 수 있습니다.

컨테이너의 맨 뒤에 위치한 이터레이터에서 이 함수를 호출하면 정의되지 않은 결과가 발생합니다.

hasNext(), next(), peekPrevious()도 참조하십시오 .

QMutableMultiMapIterator<Key, T>::Item QMutableMultiMapIterator::peekPrevious() const

이테레이터를 이동시키지 않고 이전 항목을 반환합니다.

반환된 값에 대해 ` key()`를 호출하면 항목의 키를, ` value()`를 호출하면 값을 얻을 수 있습니다.

컨테이너의 맨 앞에 위치한 이터레이터에서 이 함수를 호출하면 정의되지 않은 결과가 발생합니다.

hasPrevious(), previous(), peekNext()도 참조하십시오 .

QMutableMultiMapIterator<Key, T>::Item QMutableMultiMapIterator::previous()

이전 항목을 반환하고 이터레이터를 한 위치 뒤로 이동시킵니다.

반환된 값에 대해 ` key()`를 호출하여 항목의 키를 얻고, ` value()`를 호출하여 값을 얻습니다.

컨테이너의 맨 앞에 위치한 이터레이터에서 이 함수를 호출하면 정의되지 않은 결과가 발생합니다.

hasPrevious(), peekPrevious(), next()도 참조하십시오 .

void QMutableMultiMapIterator::remove()

탐색 함수 중 하나(next(), previous(), findNext(), findPrevious())를 사용하여 건너뛴 마지막 항목을 제거합니다.

setValue()도 참조하십시오 .

void QMutableMultiMapIterator::setValue(const T &value)

value 를 사용하여 탐색 함수 중 하나로 건너뛴 마지막 항목의 값을 대체합니다.

이동 함수로는 next(), previous(), findNext(), findPrevious()가 있습니다.

key(), value(), remove()도 참조하십시오 .

void QMutableMultiMapIterator::toBack()

이테레이터를 컨테이너의 맨 뒤(마지막 항목 뒤)로 이동합니다.

toFront() 및 previous()도 참조하십시오 .

void QMutableMultiMapIterator::toFront()

이테레이터를 컨테이너의 맨 앞(첫 번째 항목 앞)으로 이동합니다.

toBack() 및 next()도 참조하십시오 .

const T &QMutableMultiMapIterator::value() const

next(), previous(), findNext(), findPrevious() 중 하나의 탐색 함수를 사용하여 건너뛴 마지막 항목의 값을 반환합니다.

next() 또는 findNext()를 호출한 후에는, value()는 peekPrevious()와 동일합니다.value(). previous() 또는 findPrevious()를 호출한 후에는, value()는 peekNext()와 동일합니다.value().

key() 및 setValue()도 참조하십시오 .

T &QMutableMultiMapIterator::value()

탐색 함수 중 하나를 사용하여 건너뛴 마지막 항목의 값에 대한 비정수 참조를 반환합니다.

QMutableMultiMapIterator<Key, T> &QMutableMultiMapIterator::operator=(QMultiMap<Key, T> &map)

이테레이터가 ` map`에서 작동하도록 합니다. 이테레이터는 맵의 맨 앞(첫 번째 항목 앞)에 위치하도록 설정됩니다.

toFront() 및 toBack()도 참조하십시오 .

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