合规国际互联网加速 OSASE为企业客户提供高速稳定SD-WAN国际加速解决方案。 广告
[TOC] ## 概述 1. 不能使用 map[key] 这种形式查找映射里是否包含键 key 的元素,因为 operator[](const Key & key) 函数在找不到 key 元素时,自动调用 value 类默认构造函数为映射添加 key-value 新元素 2. 一般不建议使用 QMap 的 insertMulti() 和 unite() 函数进行多重映射添加或映射合并,Qt 单独提供了 QMultiMap 表示多重映射,在程序中尽量让 QMap 保持一对一映射,避免代码的误解 常用函数 ``` // 构造函数 QMap<QString, int> nameAge; QMap() //默认构造函数 QMap(std::initializer_list<std::pair<Key, T> > list) //初始化列表构造函数 QMap(const QMap<Key, T> & other) //复制构造函数 QMap(QMap<Key, T> && other) //移动构造函数 QMap(const std::map<Key, T> & 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<Key> keys() const ``` ## 示例 示例1 ``` QMap<QString, int> nameAge{ {"Alice", 20}, {"Bob", 22}, {"Cell", 19} }; qDebug()<<nameAge; QMap<QString, int> nameAgeOther = std::move( nameAge ); qDebug()<<nameAge; qDebug()<<nameAgeOther; ``` 示例2 ``` QMap<QString, int> nameAge; nameAge.insert( "Alice", 20 ); nameAge["Bob"] = 22; nameAge["Cell"] = 19; ```