QMap
最后更新于:2022-04-02 02:13:54
[TOC]
## 概述
1. 不能使用 map[key] 这种形式查找映射里是否包含键 key 的元素,因为 operator[](const Key & key) 函数在找不到 key 元素时,自动调用 value 类默认构造函数为映射添加 key-value 新元素
2. 一般不建议使用 QMap 的 insertMulti() 和 unite() 函数进行多重映射添加或映射合并,Qt 单独提供了 QMultiMap 表示多重映射,在程序中尽量让 QMap 保持一对一映射,避免代码的误解
常用函数
```
// 构造函数
QMap nameAge;
QMap() //默认构造函数
QMap(std::initializer_list > list) //初始化列表构造函数
QMap(const QMap & other) //复制构造函数
QMap(QMap && other) //移动构造函数
QMap(const std::map & other) //根据标准库的映射构造 QMap
// 添加函数
iterator insert(const Key & key, const T & value) //直接插入一对 key - value
iterator insert(const_iterator pos, const Key & key, const T & value)//在建议的迭代器 pos 位置插入一对 key - value
T & QMap::operator[](const Key & key) //[] 运算符重载
//移除和删除函数
T take(const Key & key)
int remove(const Key & key)
void clear()
// 访问和查询函数
bool contains(const Key & key) const
QList keys() const
```
## 示例
示例1
```
QMap nameAge{ {"Alice", 20},
{"Bob", 22},
{"Cell", 19} };
qDebug()< nameAgeOther = std::move( nameAge );
qDebug()< nameAge;
nameAge.insert( "Alice", 20 );
nameAge["Bob"] = 22;
nameAge["Cell"] = 19;
```
';