QMap Class
template <typename Key, typename T> class QMapQMap 클래스는 연관 배열을 제공하는 템플릿 클래스입니다. 더 보기...
| 헤더: | #include <QMap> |
| CMake: | find_package(Qt6 REQUIRED COMPONENTS Core) target_link_libraries(mytarget PRIVATE Qt6::Core) |
| qmake: | QT += core |
- 상속된 멤버를 포함한 모든 멤버 목록
- QMap은 암시적 공유 클래스 및 컨테이너 클래스의 일부입니다.
참고: 이 클래스의 모든 함수는 재진입 가능합니다.
QMap 비교
| 범주 | 비교 가능한 유형 |
|---|---|
| 동등성 | QMap |
공개 유형
| class | const_iterator |
| class | iterator |
| class | key_iterator |
| ConstIterator | |
| Iterator | |
| const_key_value_iterator | |
| difference_type | |
| key_type | |
| key_value_iterator | |
| mapped_type | |
| size_type |
공개 함수
| QMap() | |
| QMap(const std::map<Key, T> &other) | |
| QMap(std::initializer_list<std::pair<Key, T>> list) | |
| QMap(std::map<Key, T> &&other) | |
| QMap(const QMap<Key, T> &other) | |
| QMap(QMap<Key, T> &&other) | |
| ~QMap() | |
(since 6.4) auto | asKeyValueRange() && |
(since 6.4) auto | asKeyValueRange() & |
(since 6.4) auto | asKeyValueRange() const && |
(since 6.4) auto | asKeyValueRange() const & |
| QMap<Key, T>::iterator | begin() |
| QMap<Key, T>::const_iterator | begin() const |
| QMap<Key, T>::const_iterator | cbegin() const |
| QMap<Key, T>::const_iterator | cend() const |
| void | clear() |
| QMap<Key, T>::const_iterator | constBegin() const |
| QMap<Key, T>::const_iterator | constEnd() const |
| QMap<Key, T>::const_iterator | constFind(const Key &key) const |
| QMap<Key, T>::const_key_value_iterator | constKeyValueBegin() const |
| QMap<Key, T>::const_key_value_iterator | constKeyValueEnd() const |
| bool | contains(const Key &key) const |
| QMap<Key, T>::size_type | count(const Key &key) const |
| QMap<Key, T>::size_type | count() const |
| bool | empty() const |
| QMap<Key, T>::iterator | end() |
| QMap<Key, T>::const_iterator | end() const |
| std::pair<QMap<Key, T>::iterator, QMap<Key, T>::iterator> | equal_range(const Key &key) |
| std::pair<QMap<Key, T>::const_iterator, QMap<Key, T>::const_iterator> | equal_range(const Key &key) const |
| QMap<Key, T>::iterator | erase(QMap<Key, T>::const_iterator pos) |
(since 6.0) QMap<Key, T>::iterator | erase(QMap<Key, T>::const_iterator first, QMap<Key, T>::const_iterator last) |
| QMap<Key, T>::iterator | find(const Key &key) |
| QMap<Key, T>::const_iterator | find(const Key &key) const |
| T & | first() |
| const T & | first() const |
| const Key & | firstKey() const |
| void | insert(QMap<Key, T> &&map) |
| void | insert(const QMap<Key, T> &map) |
| QMap<Key, T>::iterator | insert(const Key &key, const T &value) |
| QMap<Key, T>::iterator | insert(QMap<Key, T>::const_iterator pos, const Key &key, const T &value) |
| bool | isEmpty() const |
| Key | key(const T &value, const Key &defaultKey = Key()) const |
| QMap<Key, T>::key_iterator | keyBegin() const |
| QMap<Key, T>::key_iterator | keyEnd() const |
| QMap<Key, T>::key_value_iterator | keyValueBegin() |
| QMap<Key, T>::const_key_value_iterator | keyValueBegin() const |
| QMap<Key, T>::key_value_iterator | keyValueEnd() |
| QMap<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 |
| QMap<Key, T>::iterator | lowerBound(const Key &key) |
| QMap<Key, T>::const_iterator | lowerBound(const Key &key) const |
| QMap<Key, T>::size_type | remove(const Key &key) |
(since 6.1) QMap<Key, T>::size_type | removeIf(Predicate pred) |
| QMap<Key, T>::size_type | size() const |
| void | swap(QMap<Key, T> &other) |
| T | take(const Key &key) |
| std::map<Key, T> | toStdMap() const & |
(since 6.0) std::map<Key, T> | toStdMap() && |
| QMap<Key, T>::iterator | upperBound(const Key &key) |
| QMap<Key, T>::const_iterator | upperBound(const Key &key) const |
| T | value(const Key &key, const T &defaultValue = T()) const |
| QList<T> | values() const |
| QMap<Key, T> & | operator=(QMap<Key, T> &&other) |
| QMap<Key, T> & | operator=(const QMap<Key, T> &other) |
| T & | operator[](const Key &key) |
| T | operator[](const Key &key) const |
관련 비회원 요소
(since 6.1) qsizetype | erase_if(QMap<Key, T> &map, Predicate pred) |
(since 6.8) size_t | qHash(const QMap<Key, T> &key, size_t seed = 0) |
| bool | operator!=(const QMap<Key, T> &lhs, const QMap<Key, T> &rhs) |
(since 6.12) bool | operator<(const QMap<Key, T> &lhs, const QMap<Key, T> &rhs) |
| QDataStream & | operator<<(QDataStream &out, const QMap<Key, T> &map) |
(since 6.12) bool | operator<=(const QMap<Key, T> &lhs, const QMap<Key, T> &rhs) |
(since 6.12) auto | operator<=>(const QMap<Key, T> &lhs, const QMap<Key, T> &rhs) |
| bool | operator==(const QMap<Key, T> &lhs, const QMap<Key, T> &rhs) |
(since 6.12) bool | operator>(const QMap<Key, T> &lhs, const QMap<Key, T> &rhs) |
(since 6.12) bool | operator>=(const QMap<Key, T> &lhs, const QMap<Key, T> &rhs) |
| QDataStream & | operator>>(QDataStream &in, QMap<Key, T> &map) |
상세 설명
QMap<KEY, T>는 Qt의 제네릭 컨테이너 클래스 중 하나로, 여기서 Key 는 조회 키로 사용되는 유형이고 T 는 매핑된 값의 유형입니다. 이 클래스는 (키, 값) 쌍을 저장하며 키를 통한 빠른 조회를 제공합니다.
QMap과 QHash 은 매우 유사한 기능을 제공합니다. 차이점은 다음과 같습니다.
- QHash QMap보다 평균적으로 더 빠른 조회 속도를 제공합니다. (자세한 내용은 ‘알고리즘 복잡도’를 참조하십시오.)
- QHash 을 반복 처리할 때 항목의 순서는 임의입니다. QMap의 경우 항목은 항상 키 순으로 정렬됩니다.
- QHash 의 키 유형은 operator==()와 전역 함수 qHash(Key)를 제공해야 합니다. QMap의 키 유형은 전체 순서를 지정하는 operator<()를 제공해야 합니다. Qt 5.8.1부터는 기본 operator<()가 전체 순서를 제공하지 않더라도 포인터 유형을 키로 사용하는 것이 안전합니다.
다음은 QString 키와 int 값을 가진 QMap의 예시입니다:
(키, 값) 쌍을 맵에 삽입하려면 operator[]()를 사용할 수 있습니다:
map["one"] = 1;
map["three"] = 3;
map["seven"] = 7;이렇게 하면 ("one", 1), ("three", 3), ("seven", 7)이라는 세 개의 (키, 값) 쌍이 QMap에 삽입됩니다. 맵에 항목을 삽입하는 또 다른 방법은 insert()을 사용하는 것입니다:
map.insert("twelve", 12);값을 조회하려면 operator[]() 또는 value()을 사용합니다:
int num1 = map["thirteen"];
int num2 = map.value("thirteen");맵에 지정된 키를 가진 항목이 없는 경우, 이 함수들은 기본 생성된 값을 반환합니다.
맵에 특정 키가 포함되어 있는지 확인하려면 ` contains()`를 사용합니다:
int timeout = 30;
if (map.contains("TIMEOUT"))
timeout = map.value("TIMEOUT");지정된 키를 가진 항목이 없을 경우 두 번째 인자를 기본값으로 사용하는 value() 오버로드도 있습니다:
int timeout = map.value("TIMEOUT", 30);일반적으로 맵에서 키를 조회할 때는 operator[]() 대신 contains() 및 value()을 사용하는 것이 좋습니다. 그 이유는 operator[]()가 동일한 키를 가진 항목이 존재하지 않을 경우 (맵이 const가 아닌 한) 아무런 경고 없이 맵에 항목을 삽입하기 때문입니다. 예를 들어, 다음 코드 조각은 메모리에 1000개의 항목을 생성합니다:
// WRONG
QMap<int, QWidget *> map;
//...
for (int i = 0; i < 1000; ++i) {
if (map[i] == okButton)
cout << "Found button at index " << i << endl;
}이 문제를 방지하려면 위 코드에서 map[i] 을 map.value(i) 으로 대체하십시오.
QMap에 저장된 모든 (키, 값) 쌍을 순회하려면 이터레이터를 사용할 수 있습니다. QMap은 Java 스타일 이터레이터 (QMapIterator 및 QMutableMapIterator)와 STL 스타일 이터레이터 (QMap::const_iterator 및 QMap::iterator)를 모두 제공합니다. 다음은 Java 스타일 이터레이터를 사용하여 QMap<QString, int>를 순회하는 방법입니다:
QMapIterator<QString, int> i(map);
while (i.hasNext()) {
i.next();
cout << qPrintable(i.key()) << ": " << i.value() << endl;
}다음은 동일한 코드이지만, 이번에는 STL 스타일의 반복자를 사용한 예입니다:
for (auto i = map.cbegin(), end = map.cend(); i != end; ++i)
cout << qPrintable(i.key()) << ": " << i.value() << endl;항목은 키의 오름차순으로 순회됩니다.
QMap은 키당 하나의 값만 허용합니다. QMap에 이미 존재하는 키로 ` insert()`를 호출하면 이전 값이 지워집니다. 예를 들어:
map.insert("plenty", 100);
map.insert("plenty", 2000);
// map.value("plenty") == 2000그러나 ` QMultiMap`를 사용하면 키당 여러 개의 값을 저장할 수 있습니다.
맵에서 키가 아닌 값만 추출해야 하는 경우, 범위 기반 for 루프를 사용할 수도 있습니다:
맵에서 항목을 제거하는 방법에는 여러 가지가 있습니다. 한 가지 방법은 ` remove()`를 호출하는 것으로, 이렇게 하면 지정된 키를 가진 모든 항목이 제거됩니다. 또 다른 방법은 ` QMutableMapIterator::remove()`를 사용하는 것입니다. 또한 ` clear()`를 사용하여 맵 전체를 비울 수도 있습니다.
QMap의 키와 값 데이터 유형은 할당 가능한 데이터 유형이어야 합니다. 이는 사용자가 접하게 될 대부분의 데이터 유형을 포함하지만, 예를 들어 ` QWidget `를 값으로 저장하는 것은 컴파일러가 허용하지 않습니다. 대신 ` QWidget *`를 저장해야 합니다. 또한, QMap의 키 유형은 `operator<()`를 제공해야 합니다. QMap은 이를 사용하여 항목을 정렬하며, ` x < y `이나 ` y < x ` 중 어느 것도 참이 아닐 경우 두 키 ` x `와 ` y `가 동등하다고 간주합니다.
예시:
#ifndef EMPLOYEE_H
#define EMPLOYEE_H
class Employee
{
public:
Employee() {}
Employee(const QString &name, QDate dateOfBirth);
QString name() const { return myName; }
QDate dateOfBirth() const { return myDateOfBirth; }
//...
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이 예제에서는 먼저 직원들의 이름을 비교합니다. 이름이 같을 경우, 동점을 가리기 위해 생년월일을 비교합니다.
참조: QMapIterator, QMutableMapIterator, QHash 및 QSet.
멤버 유형 문서
QMap::ConstIterator
QMap::const_iterator 의 Qt 스타일 동의어.
QMap::Iterator
QMap::iterator 의 Qt 스타일 동의어.
QMap::const_key_value_iterator
QMap::const_key_value_iterator typedef는 ` QMap`에 대한 STL 스타일의 이터레이터를 제공합니다.
QMap::const_key_value_iterator는 본질적으로 QMap::const_iterator 와 동일하지만, operator*()가 값 대신 키/값 쌍을 반환한다는 점이 다릅니다.
QKeyValueIterator도 참조하십시오 .
[alias] QMap::difference_type
ptrdiff_t에 대한 typedef입니다. STL 호환성을 위해 제공됩니다.
[alias] QMap::key_type
Key에 대한 typedef입니다. STL 호환성을 위해 제공됩니다.
QMap::key_value_iterator
QMap::key_value_iterator 타입 정의는 QMap 에 대한 STL 스타일의 이터레이터를 제공합니다.
QMap::key_value_iterator는 본질적으로 QMap::iterator 와 동일하지만, operator*()가 값 대신 키/값 쌍을 반환한다는 점이 다릅니다.
QKeyValueIterator도 참조하십시오 .
[alias] QMap::mapped_type
T에 대한 typedef입니다. STL 호환성을 위해 제공됩니다.
[alias] QMap::size_type
int에 대한 typedef입니다. STL 호환성을 위해 제공됩니다.
멤버 함수 문서
[default] QMap::QMap()
빈 맵을 생성합니다.
clear()도 참조하십시오 .
[explicit] QMap::QMap(const std::map<Key, T> &other)
other 의 복사본을 생성합니다.
toStdMap()도 참조하십시오 .
QMap::QMap(std::initializer_list<std::pair<Key, T>> list)
초기화 목록 list 에 포함된 각 요소의 복사본을 사용하여 맵을 생성합니다.
[explicit] QMap::QMap(std::map<Key, T> &&other)
other 에서 이동하여 맵을 생성합니다.
toStdMap()도 참조하십시오 .
[implicit] QMap::QMap(const QMap<Key, T> &other)
other 의 복사본을 생성합니다.
QMap은 암시적으로 공유되므로 이 작업은 상수 시간 내에 수행됩니다. 이로 인해 함수에서 QMap을 반환하는 작업이 매우 빠르게 이루어집니다. 공유된 인스턴스가 수정되면 복사(쓰기 시 복사)되며, 이 작업에는 선형 시간이 소요됩니다.
operator=도 참조하십시오 .
[implicit] QMap::QMap(QMap<Key, T> &&other)
QMap 인스턴스를 생성합니다.
[implicit] QMap::~QMap()
맵을 삭제합니다. 맵의 값에 대한 참조와 이 맵을 순회하는 모든 반복자는 더 이상 유효하지 않게 됩니다.
[since 6.4] auto QMap::asKeyValueRange() &&
[since 6.4] auto QMap::asKeyValueRange() &
[since 6.4] auto QMap::asKeyValueRange() const &&
[since 6.4] auto QMap::asKeyValueRange() const &
이 맵을 키/값 쌍으로 반복 처리할 수 있는 범위 객체를 반환합니다. 예를 들어, 이 범위 객체는 구조화된 바인딩 선언과 함께 범위 기반 for 루프에서 사용할 수 있습니다:
QMap<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도 참조하십시오 .
QMap<Key, T>::iterator QMap::begin()
맵의 첫 번째 항목을 가리키는 STL 스타일의 이터레이터를 반환합니다.
constBegin() 및 end()도 참조하십시오 .
QMap<Key, T>::const_iterator QMap::begin() const
이것은 오버로드된 함수입니다.
QMap<Key, T>::const_iterator QMap::cbegin() const
맵의 첫 번째 항목을 가리키는 STL 스타일의 const 이터레이터를 반환합니다.
QMap<Key, T>::const_iterator QMap::cend() const
맵의 마지막 항목 다음에 있는 가상의 항목을 가리키는 STL 스타일의 const 이터레이터를 반환합니다.
void QMap::clear()
맵에서 모든 항목을 제거합니다.
remove()도 참조하십시오 .
QMap<Key, T>::const_iterator QMap::constBegin() const
맵의 첫 번째 항목을 가리키는 STL 스타일의 const 이터레이터를 반환합니다.
begin() 및 constEnd()도 참조하십시오 .
QMap<Key, T>::const_iterator QMap::constEnd() const
맵의 마지막 항목 다음에 있는 가상의 항목을 가리키는 STL 스타일의 const 이터레이터를 반환합니다.
constBegin() 및 end()도 참조하십시오 .
QMap<Key, T>::const_iterator QMap::constFind(const Key &key) const
맵 내에서 키 ` key `을 가진 항목을 가리키는 const 이터레이터를 반환합니다.
맵에 키 ` key`을 가진 항목이 없는 경우, 이 함수는 ` constEnd()`를 반환합니다.
find()도 참조하십시오 .
QMap<Key, T>::const_key_value_iterator QMap::constKeyValueBegin() const
맵의 첫 번째 항목을 가리키는 STL 스타일의 const 이터레이터를 반환합니다.
keyValueBegin()도 참조하십시오 .
QMap<Key, T>::const_key_value_iterator QMap::constKeyValueEnd() const
맵의 마지막 항목 다음에 오는 가상의 항목을 가리키는 STL 스타일의 const 이터레이터를 반환합니다.
constKeyValueBegin()도 참조하십시오 .
bool QMap::contains(const Key &key) const
맵에 키 ` key`을 가진 항목이 포함되어 있으면 ` true `을 반환하고, 그렇지 않으면 ` false`을 반환합니다.
count()도 참조하십시오 .
QMap<Key, T>::size_type QMap::count(const Key &key) const
key 키와 연관된 항목의 개수를 반환합니다.
contains()도 참조하십시오 .
QMap<Key, T>::size_type QMap::count() const
size()와 동일합니다.
이것은 오버로드된 함수입니다.
bool QMap::empty() const
이 함수는 STL 호환성을 위해 제공됩니다. 이 함수는 ` isEmpty()`와 동일하며, 맵이 비어 있으면 `true`를 반환하고, 그렇지 않으면 `false`를 반환합니다.
QMap<Key, T>::iterator QMap::end()
맵의 마지막 항목 뒤에 있는 가상의 항목을 가리키는 STL 스타일의 이터레이터를 반환합니다.
begin() 및 constEnd()도 참조하십시오 .
QMap<Key, T>::const_iterator QMap::end() const
이것은 오버로드된 함수입니다.
std::pair<QMap<Key, T>::iterator, QMap<Key, T>::iterator> QMap::equal_range(const Key &key)
key 에 저장된 값의 범위 [first, second) 를 구분하는 이터레이터 쌍을 반환합니다.
std::pair<QMap<Key, T>::const_iterator, QMap<Key, T>::const_iterator> QMap::equal_range(const Key &key) const
이것은 오버로드된 함수입니다.
QMap<Key, T>::iterator QMap::erase(QMap<Key, T>::const_iterator pos)
이테레이터 pos 가 가리키는 (키, 값) 쌍을 맵에서 제거하고, 맵의 다음 항목을 가리키는 이테레이터를 반환합니다.
참고: 이터레이터 pos 는 유효해야 하며, 참조 해제 가능 해야 합니다.
remove()도 참조하십시오 .
[since 6.0] QMap<Key, T>::iterator QMap::erase(QMap<Key, T>::const_iterator first, QMap<Key, T>::const_iterator last)
이터레이터 범위 [first, last)가 가리키는 (키, 값) 쌍을 맵에서 제거합니다. 마지막으로 제거된 요소 다음에 오는 맵 내 항목에 대한 이터레이터를 반환합니다.
참고: 범위 [first, last) 는 *this 내에서 유효한 범위여야 합니다.
이 함수는 Qt 6.0에서 도입되었습니다.
remove()도 참조하십시오 .
QMap<Key, T>::iterator QMap::find(const Key &key)
맵에서 키 ` key `을 가진 항목을 가리키는 이터레이터를 반환합니다.
맵에 키 ` key`을 가진 항목이 없는 경우, 이 함수는 ` end()`를 반환합니다.
constFind(), value(), values(), lowerBound(), upperBound()도 참조하십시오 .
QMap<Key, T>::const_iterator QMap::find(const Key &key) const
이것은 오버로드된 함수입니다.
T &QMap::first()
맵의 첫 번째 값, 즉 가장 작은 키에 매핑된 값에 대한 참조를 반환합니다. 이 함수는 맵이 비어 있지 않다고 가정합니다.
공유되지 않은 경우(또는 const 버전이 호출된 경우), 이 함수는 상수 시간 내에 실행됩니다.
last(), firstKey(), isEmpty()도 참조하십시오 .
const T &QMap::first() const
이것은 오버로드된 함수입니다.
const Key &QMap::firstKey() const
맵에서 가장 작은 키에 대한 참조를 반환합니다. 이 함수는 맵이 비어 있지 않다고 가정합니다.
이 함수는 상수 시간 내에 실행됩니다.
lastKey(), first(), keyBegin(), isEmpty()도 참조하십시오 .
void QMap::insert(QMap<Key, T> &&map)
map 에 있는 모든 항목을 이 맵으로 옮깁니다.
두 맵에 공통된 키가 있는 경우, 해당 키의 값은 map 에 저장된 값으로 대체됩니다.
map 이 공유된 경우, 항목은 복사됩니다.
void QMap::insert(const QMap<Key, T> &map)
map 에 있는 모든 항목을 이 맵에 삽입합니다.
두 맵에 공통된 키가 있는 경우, 해당 키의 값은 map 에 저장된 값으로 대체됩니다.
QMap<Key, T>::iterator QMap::insert(const Key &key, const T &value)
키가 key 이고 값이 value 인 새 항목을 삽입합니다.
이미 키가 key 인 항목이 존재하는 경우, 해당 항목의 값이 value 로 대체됩니다.
기존 키와 동일한 키/값 쌍을 삽입하면 기존 값이 대체됩니다.
새로 추가되거나 업데이트된 요소를 가리키는 이터레이터를 반환합니다.
QMap<Key, T>::iterator QMap::insert(QMap<Key, T>::const_iterator pos, const Key &key, const T &value)
키 key, 값 value 을 가진 새 항목을 삽입하며, pos 힌트를 통해 삽입 위치를 지정합니다.
constBegin()가 힌트로 사용되면 key 가 맵 내의 모든 키보다 작음을 나타내며, constEnd()는 key 가 맵 내의 모든 키보다 (엄밀히) 크다는 것을 나타냅니다. 그렇지 않은 경우, 힌트는 (pos - 1) 조건을 충족해야 합니다.key() < key <= pos.key(). 힌트 pos 가 잘못된 경우, 이는 무시되고 일반적인 삽입이 수행됩니다.
이미 키 key 를 가진 항목이 존재하는 경우, 해당 항목의 값은 value 로 대체됩니다.
힌트가 올바르고 맵이 공유되지 않은 경우, 삽입은 상수 시간(amortized constant time) 내에 실행됩니다.
정렬된 데이터로 맵을 생성할 때, constBegin()을 사용하여 가장 큰 키를 먼저 삽입하는 것이 constEnd()을 사용하여 정렬된 순서대로 삽입하는 것보다 빠릅니다. 이는 constEnd() - 1(힌트가 유효한지 확인하는 데 필요한 시간)이 로그 시간을 소요하기 때문입니다.
참고: 힌트를 다룰 때는 주의해야 합니다. 이전의 공유 인스턴스에서 가져온 이터레이터를 제공하면 프로그램이 중단될 수 있을 뿐만 아니라, 맵과 pos 맵이 모두 조용히 손상될 위험도 있습니다.
새로 추가되거나 업데이트된 요소를 가리키는 이터레이터를 반환합니다.
이 함수는 오버로드된 함수입니다.
bool QMap::isEmpty() const
맵에 항목이 없으면 ` true `를 반환하고, 그렇지 않으면 `false`를 반환합니다.
size()도 참조하십시오 .
Key QMap::key(const T &value, const Key &defaultKey = Key()) const
값이 value 인 첫 번째 키를 반환하며, 맵에 값이 value 인 항목이 없는 경우에는 defaultKey 를 반환합니다. defaultKey 가 제공되지 않으면 이 함수는 기본 생성된 키를 반환합니다.
QMap 의 내부 데이터 구조는 값이 아닌 키를 통한 빠른 조회를 위해 최적화되어 있으므로, 이 함수는 속도가 느릴 수 있습니다(선형 시간).
QMap<Key, T>::key_iterator QMap::keyBegin() const
맵의 첫 번째 키를 가리키는 const STL 스타일의 이터레이터를 반환합니다.
keyEnd() 및 firstKey()도 참조하십시오 .
QMap<Key, T>::key_iterator QMap::keyEnd() const
맵의 마지막 키 뒤에 있는 가상의 항목을 가리키는 const STL 스타일의 반복자를 반환합니다.
keyBegin() 및 lastKey()도 참조하십시오 .
QMap<Key, T>::key_value_iterator QMap::keyValueBegin()
맵의 첫 번째 항목을 가리키는 STL 스타일의 이터레이터를 반환합니다.
keyValueEnd()도 참조하십시오 .
QMap<Key, T>::const_key_value_iterator QMap::keyValueBegin() const
맵의 첫 번째 항목을 가리키는 STL 스타일의 const 이터레이터를 반환합니다.
keyValueEnd()도 참조하십시오 .
QMap<Key, T>::key_value_iterator QMap::keyValueEnd()
맵의 마지막 항목 바로 다음에 있는 가상의 항목을 가리키는 STL 스타일의 이터레이터를 반환합니다.
keyValueBegin()도 참조하십시오 .
QMap<Key, T>::const_key_value_iterator QMap::keyValueEnd() const
맵의 마지막 항목 다음에 있는 가상의 항목을 가리키는 STL 스타일의 const 이터레이터를 반환합니다.
keyValueBegin()도 참조하십시오 .
QList<Key> QMap::keys() const
맵에 포함된 모든 키를 오름차순으로 정렬한 목록을 반환합니다.
이 순서는 values()에서 사용하는 순서와 동일함이 보장됩니다.
이 함수는 선형 시간 내에 새로운 리스트를 생성합니다. 이에 수반되는 시간 및 메모리 사용량은 keyBegin()에서 keyEnd()로 반복하여 처리함으로써 피할 수 있습니다.
QList<Key> QMap::keys(const T &value) const
value 값과 연관된 모든 키를 오름차순으로 정렬하여 리스트로 반환합니다.
QMap 의 내부 데이터 구조는 값이 아닌 키를 통한 빠른 조회에 최적화되어 있으므로, 이 함수는 처리 속도가 느릴 수 있습니다(선형 시간).
이 함수는 오버로드된 함수입니다.
T &QMap::last()
맵의 마지막 값, 즉 가장 큰 키에 매핑된 값에 대한 참조를 반환합니다. 이 함수는 맵이 비어 있지 않다고 가정합니다.
공유되지 않은 경우(또는 const 버전이 호출된 경우), 이 함수는 상수 시간 내에 실행됩니다.
first(), lastKey(), isEmpty()도 참조하십시오 .
const T &QMap::last() const
이것은 오버로드된 함수입니다.
const Key &QMap::lastKey() const
맵에서 가장 큰 키에 대한 참조를 반환합니다. 이 함수는 맵이 비어 있지 않다고 가정합니다.
이 함수는 상수 시간 내에 실행됩니다.
firstKey(), last(), keyEnd(), isEmpty()도 참조하십시오 .
QMap<Key, T>::iterator QMap::lowerBound(const Key &key)
맵에서 키 key 을 가진 첫 번째 항목을 가리키는 이터레이터를 반환합니다. 맵에 키 key 을 가진 항목이 없는 경우, 이 함수는 키가 더 큰 항목 중 가장 가까운 항목을 가리키는 이터레이터를 반환합니다.
upperBound() 및 find()도 참조하십시오 .
QMap<Key, T>::const_iterator QMap::lowerBound(const Key &key) const
이것은 오버로드된 함수입니다.
QMap<Key, T>::size_type QMap::remove(const Key &key)
맵에서 키 key 을 가진 모든 항목을 제거합니다. 제거된 항목의 개수를 반환하며, 키가 맵에 존재하면 1을, 그렇지 않으면 0을 반환합니다.
[since 6.1] template <typename Predicate> QMap<Key, T>::size_type QMap::removeIf(Predicate pred)
pred 조건식이 참을 반환하는 모든 요소를 맵에서 제거합니다.
이 함수는 QMap<Key, T>::iterator 유형의 인자나 std::pair<const Key &, T &> 유형의 인자를 받는 술어를 지원합니다.
제거된 요소가 있는 경우, 그 개수를 반환합니다.
이 함수는 Qt 6.1에서 도입되었습니다.
QMap<Key, T>::size_type QMap::size() const
맵에 포함된 (키, 값) 쌍의 개수를 반환합니다.
[noexcept] void QMap::swap(QMap<Key, T> &other)
이 지도를 other 로 교체합니다. 이 작업은 매우 빠르며 실패하는 일이 없습니다.
T QMap::take(const Key &key)
key 키를 가진 항목을 맵에서 제거하고, 해당 키와 연관된 값을 반환합니다.
해당 항목이 맵에 존재하지 않는 경우, 이 함수는 기본 생성된 값을 반환합니다.
반환 값을 사용하지 않는다면, remove()을 사용하는 것이 더 효율적입니다.
remove()도 참조하십시오 .
std::map<Key, T> QMap::toStdMap() const &
QMap 와 동등한 STL 맵을 반환합니다.
[since 6.0] std::map<Key, T> QMap::toStdMap() &&
참고: 이 함수를호출하면 이 QMap 는 부분적으로 형성된 상태로 남게 되며, 이 상태에서는 소멸 또는 새 값 할당만이 유효한 연산입니다.
이 함수는 오버로드된 함수입니다.
이 함수는 Qt 6.0에서 도입되었습니다.
QMap<Key, T>::iterator QMap::upperBound(const Key &key)
맵에서 키 ` key `을 가진 마지막 항목 바로 다음에 오는 항목을 가리키는 이터레이터를 반환합니다. 맵에 키 ` key`을 가진 항목이 없는 경우, 이 함수는 키가 더 큰 가장 가까운 항목을 가리키는 이터레이터를 반환합니다.
예시:
QMap<int, QString> map;
map.insert(1, "one");
map.insert(5, "five");
map.insert(10, "ten");
map.upperBound(0); // returns iterator to (1, "one")
map.upperBound(1); // returns iterator to (5, "five")
map.upperBound(2); // returns iterator to (5, "five")
map.upperBound(10); // returns end()
map.upperBound(999); // returns end()lowerBound() 및 find()도 참조하십시오 .
QMap<Key, T>::const_iterator QMap::upperBound(const Key &key) const
이것은 오버로드된 함수입니다.
T QMap::value(const Key &key, const T &defaultValue = T()) const
key 키와 연결된 값을 반환합니다.
맵에 키 ` key`을 가진 항목이 없는 경우, 이 함수는 ` defaultValue`을 반환합니다. ` defaultValue `이 지정되지 않은 경우, 이 함수는 기본 생성된 값을 반환합니다.
key(), values(), contains(), operator[]()도 참조하십시오 .
QList<T> QMap::values() const
맵에 포함된 모든 값을 키의 오름차순으로 정렬하여 리스트로 반환합니다.
이 함수는 선형 시간 내에 새로운 리스트를 생성합니다. 이에 수반되는 시간 및 메모리 사용량은 keyValueBegin()에서 keyValueEnd()로 반복하여 피할 수 있습니다.
[implicit] QMap<Key, T> &QMap::operator=(QMap<Key, T> &&other)
other 를 이 QMap 인스턴스에 할당합니다.
[implicit] QMap<Key, T> &QMap::operator=(const QMap<Key, T> &other)
이 맵에 ` other `를 할당하고, 이 맵에 대한 참조를 반환합니다.
T &QMap::operator[](const Key &key)
key 키와 연관된 값을 수정 가능한 참조로 반환합니다.
맵에 키 key 을 가진 항목이 없는 경우, 이 함수는 키 key 을 가진 기본 생성된 값을 맵에 삽입하고, 해당 값에 대한 참조를 반환합니다.
T QMap::operator[](const Key &key) const
value()와 동일합니다.
이 함수는 오버로드된 함수입니다.
관련 비회원
[since 6.1] template <
typename Key,
typename T,
typename Predicate
>
qsizetype erase_if(QMap<Key, T> &map, Predicate pred)
pred 조건식이 참을 반환하는 모든 요소를 map 맵에서 제거합니다.
이 함수는 QMap<Key, T>::iterator 유형의 인자나 std::pair<const Key &, T &> 유형의 인자를 받는 술어를 지원합니다.
제거된 요소가 있는 경우, 그 개수를 반환합니다.
이 함수는 Qt 6.1에서 도입되었습니다.
[since 6.8] size_t qHash(const QMap<Key, T> &key, size_t seed = 0)
seed 를 계산의 시드로 사용하여 key 에 대한 해시 값을 반환합니다.
Key 및 T 유형은 qHash()에서 지원되어야 합니다.
이 함수는 Qt 6.8에서 도입되었습니다.
bool operator!=(const QMap<Key, T> &lhs, const QMap<Key, T> &rhs)
lhs 가 rhs 와 같지 않으면 true 를 반환하고, 그렇지 않으면 false를 반환합니다.
두 맵은 동일한 (키, 값) 쌍을 포함할 때 서로 같다고 간주됩니다.
이 함수를 사용하려면 키와 값의 유형이 ` operator==()`를 구현해야 합니다.
operator==()도 참조하십시오 .
[since 6.12] bool operator<(const QMap<Key, T> &lhs, const QMap<Key, T> &rhs)
lhs 가 rhs보다 사전순으로 작으면 true 를 반환하고, 그렇지 않으면 false 를 반환합니다.
이 연산자는 키 유형 Key 과 매핑된 유형 T 모두가 operator<=>() (C++20 모드에서), compareThreeWay() 헬퍼 메서드, 또는 operator<() 중 하나를 제공하는 경우 사용할 수 있습니다.
이 함수는 Qt 6.12에서 도입되었습니다.
template <typename Key, typename T> QDataStream &operator<<(QDataStream &out, const QMap<Key, T> &map)
map 맵을 out 스트림에 기록합니다.
이 함수를 사용하려면 키와 값의 유형이 operator<<() 을 구현해야 합니다.
QDataStream 연산자의 형식도참조하십시오 .
[since 6.12] bool operator<=(const QMap<Key, T> &lhs, const QMap<Key, T> &rhs)
lhs 가 rhs보다 사전순으로 작거나 같으면 true 를 반환하고, 그렇지 않으면 false 를 반환합니다.
이 연산자는 키 유형 Key 과 매핑된 유형 T 이 모두 operator<=>() (C++20 모드에서), compareThreeWay() 헬퍼 메서드, 또는 operator<() 중 하나를 제공하는 경우 사용할 수 있습니다.
이 함수는 Qt 6.12에서 도입되었습니다.
[since 6.12] auto operator<=>(const QMap<Key, T> &lhs, const QMap<Key, T> &rhs)
lhs 와 rhs 의 내용을 사전순으로 비교합니다. 적용 가능한 범주 유형 중 가장 강력한 유형의 결과를 반환합니다.
참고: 이 연산자는 키 유형 Key 과 매핑된 유형 T 이 모두 std::three_way_comparable 컨셉의 요구 사항을 충족하거나 operator<() 를 제공하는 경우에만 C++20 모드에서 사용할 수 있습니다. 이 경우 <, <=, > 및 >= 연산자는 operator<=>() 와 operator==() 에서 합성됩니다.
이 함수는 Qt 6.12에서 도입되었습니다.
bool operator==(const QMap<Key, T> &lhs, const QMap<Key, T> &rhs)
lhs 가 rhs 와 같으면 true 를 반환하고, 그렇지 않으면 false를 반환합니다.
두 맵은 동일한 (키, 값) 쌍을 포함할 때 동일한 것으로 간주됩니다.
이 함수를 사용하려면 키와 값의 유형이 operator==() 을 구현해야 합니다.
operator!=()도 참조하십시오 .
[since 6.12] bool operator>(const QMap<Key, T> &lhs, const QMap<Key, T> &rhs)
lhs 가 rhs보다 사전순으로 클 경우 true 를 반환하고, 그렇지 않은 경우 false 를 반환합니다.
이 연산자는 키 유형 ` Key `과 매핑된 유형 ` T `이 모두 ` operator<=>() `(C++20 모드에서), ` compareThreeWay() ` 헬퍼 메서드, 또는 ` operator<()` 중 하나를 제공하는 경우 사용할 수 있습니다.
이 함수는 Qt 6.12에서 도입되었습니다.
[since 6.12] bool operator>=(const QMap<Key, T> &lhs, const QMap<Key, T> &rhs)
lhs 가 rhs보다 사전순으로 크거나 같으면 true 를 반환하고, 그렇지 않으면 false 를 반환합니다.
이 연산자는 키 유형 Key 과 매핑된 유형 T 이 모두 operator<=>() (C++20 모드에서), compareThreeWay() 헬퍼 메서드, 또는 operator<() 중 하나를 제공하는 경우 사용할 수 있습니다.
이 함수는 Qt 6.12에서 도입되었습니다.
template <typename Key, typename T> QDataStream &operator>>(QDataStream &in, QMap<Key, T> &map)
in 스트림에서 map 로 맵을 읽어옵니다.
이 함수를 사용하려면 키와 값의 유형이 operator>>() 을 구현해야 합니다.
QDataStream 연산자의 형식도참조하십시오 .
© 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.