0、说明

QMap < Key , T >

一个QMap就是一个K-V对,也可以说是字典对象。

1)构造

构造一个Key是QString,Value是int的QMap:

QMap<QString, int> map;

如果已经知道需要初始化的K-V对,可以这样写:

QMap<QString,int> map = {{"Monday",1},{"Tuesday",2},{"Wednesday",3}};

QMap<QString,int> map = {{K1,V1},{K2,V2},...};

2)插入

①、map[key]=value;

②、map.insert( key , value );

3)提取

①、int num1 = map[ key ];

②、int num2 = map.value( key );

提取时,通常配合contains( key )判断Map中是否有指定Key的K-V对。

if (map.contains("13"))
num = map.value("13");
//或 num = map["13"];

推荐用②,因为用[ ]时,如果不存在对应K-V对,将会新创建一项。

4)迭代

QMap有Java样式和STL样式两种迭代器,Java样式的是QMapIterator、QMutableMapIterator;STL样式的是QMap::const_iterator、QMap::iterator

①Java样式

QMapIterator<QString, int> i(map);
while (i.hasNext()) {
i.next();
cout << i.key() << ": " << i.value() << Qt::endl;
}

②STL样式

QMap<QString, int>::const_iterator i = map.constBegin();
while (i != map.constEnd()) {
cout << i.key() << ": " << i.value() << Qt::endl;
++i;
}

1、模块和加载项

Header: #include <QMap>
qmake: QT += core
Inherited By:

QMultiMap

2、构造

QMap(std::map<Key, T> other) 得到map的副本
QMap(QMap<Key, T> other) 得到map的副本
QMap() 构造一个空map

3、实例方法

返回值类型

方法

说明

QMap<Key, T> &

bool

bool

T &

operator=(QMap<Key, T> other)

operator!=(QMap<Key, T> other)

operator==(QMap<Key, T> other)

operator[](Key key)

赋值

判断两个Map是否相等

通过Map[key]的方式访问Key对应的Value

 QMap::iterator begin() 返回一个STL样式的迭代器,指向Map的第一项
 QMap::const_iterator begin()  
 QMap::const_iterator cbegin() 返回一个 const STL样式的迭代器,指向Map的第一项
 QMap::const_iterator cend() 返回一个 const STL样式的迭代器,指向Map的最后一项后的项
 void clear() 移除所有Item
 QMap::const_iterator constBegin() 返回一个 const STL样式的迭代器,指向Map的第一项
 QMap::const_iterator constEnd() 返回一个 const STL样式的迭代器,指向Map的最后一项后的项
 QMap::const_iterator constFind(Key key) 返回一个 const STL样式的迭代器,指向K是key的项
 QMap::const_key_value_iterator constKeyValueBegin() 返回一个 const STL样式的迭代器,指向Map的第一个Entry
 QMap::const_key_value_iterator constKeyValueEnd() 返回一个 const STL样式的迭代器,指向Map的最后一个Entry后的Entry
 bool contains(Key key) Map中是否包含指定Key
 int

count(Key key)

count()

返回有多少个Key为key的Item。

返回整个Map的Item的数量。

 bool empty() 判断Map是否为空
 QMap::iterator end() 返回一个STL样式的迭代器,指向Map的最后一项后的项
 QMap::const_iterator end() 返回一个 const STL样式的迭代器,指向Map的最后一项后的项
 QMap::iterator erase(QMap::iterator pos) 移除迭代器pos指向的Item,返回指向下一项的迭代器
 QMap::iterator find(Key key) 返回一个迭代器,指向Key为key的Item
 QMap::const_iterator find(Key key)  
 T & first() 第一个Value
 Key & firstKey() 第一个Key
 QMap::iterator

insert(Key key, T value)

向Map中插入一个新Item
 void insert(QMap<Key, T> map) 把map中的所有Item都插入到Map中
 bool isEmpty() 是否为空
 Key key(T value, Key defaultKey = Key()) 返回给定的Value对应的第一个Key
 QMap::key_iterator keyBegin() 返回一个 const STL样式迭代器指向第一个Key
QMap::key_iterator keyEnd() 返回一个 const STL样式迭代器指向最后一个Key之后的Key
 QMap::key_value_iterator keyValueBegin() 返回一个 const STL样式迭代器指向第一个Entry
QMap::key_value_iterator keyValueEnd() 返回一个 const STL样式迭代器指向最后一个Entry之后的Entry
 QList<Key>

keys()

keys(T value)

所有Key构成的List
 T & last() 最后一个Value
Key &  lastKey() 最后一个Key
QMap::iterator  lowerBound(Key key) 返回指向Item的Key为key的迭代器,如果没有这个Key,那么返回最接近但是比key大的Key对应的Item的迭代器
 QMap::const_iterator lowerBound(Key key)  
 int remove(Key key) 移除Map中所有Key为key的Item,返回移除了多少项
int  size() Map中有多少项
 void swap(QMap<Key, T> &other) 互换两个Map
 T take(Key key) 移除指定Key,并返回它的Value
std::map<Key, T>  toStdMap() 返回该QMap对应的STL Map
QMap::iterator  upperBound(Key key) 返回指向Item的Key为key的迭代器,如果没有这个Key,那么返回最接近但是比key小的Key对应的Item的迭代器
QMap::const_iterator  upperBound(Key key)  
 T value(Key key, T defaultValue = T()) 提取指定Key的Value
 QList<T> values() 所有Value构成的List

Qt:QMap的更多相关文章

  1. Qt:foreach

    0.说明 Qt提供一个关键字foreach(实际上是<QtGlobal>中定义的一个宏)用于方便地访问容器中的所有数据项. foreach关键字用于遍历容器中的所有数据项 注意 forea ...

  2. Qt:禁止qDebug的输出

    Qt:禁止qDebug的输出 在工程的.pro文件里加上以下编译批令即可: DEFINES += QT_NO_DEBUG_OUTPUT

  3. Qt:使用自定义的字体

    Qt:使用自定义的字体 1. 下载字体文件 2. 加载字体文件 3. 使用字体   QFontDatabase::addApplicationFont("XENOTRON.TTF" ...

  4. Qt:QJsonObject

    0.说明 QJsonObject在逻辑上就是一个Map或Dict!记住这一点对理解它的方法.说明很有帮助. QJsonObject类封装了JSON Object. JSON Object是一个Key- ...

  5. Qt:QJsonValue

    0.说明 QJsonValue类用于操作JSON中的各种数据. JSON是用于存储结构化数据的格式,JSON中的数据可以是六种类型: 基本类型 存储类型 bool QJsonValue::Bool d ...

  6. Qt:QJsonArray

    0.说明 QJsonArray中存储了一系列的QJsonValue.可以向其中插入.删除QJsonValue. 一个QJsonArray可以与QVariantList互相转换.可以通过size()访问 ...

  7. Qt:QUrl构造时的qrc前缀

    参考(按对我帮助从大到小排列): Qt内的各种路径(让人迷惑) - 鬼谷子com - 博客园 qt webengineview 加载本地资源方式 - beautifulday - 博客园 (17条消息 ...

  8. Qt:基于TCP和UDP的局域网P2P(局域网)通讯封装

    封装了一个类,可以进行在局域网进行P2P通讯(仅局域网可用) 也就是说,假设局域网中有10台电脑,那么从本机发出的数据,将依次派发到这10台电脑(目前的设计中包括自己这台) 在使用方面,构造的时候给端 ...

  9. Qt:QVariant

    0.说明 QVariant可以表现出Qt数据类型中最普遍的行为. 一个QVariant对象中一次只保留一个type()的单个值(有的type()可以是多值的,例如StringList),可以用conv ...

随机推荐

  1. ddos攻击是什么,如何防御

    DDoS(Distributed Denial of Service,分布式拒绝服务) 定义: 主要通过大量合法的请求占用大量网络资源,从而使合法用户无法得到服务的响应,是目前最强大.最难防御的攻击之 ...

  2. 001 研发同学必学哪些 Linux 命令?

    01 研发同学为啥要掌握 Linux 命令? 身为研发同学,Linux 是绕不过去的一个小山包,不是说要掌握的十分精通,在程序员界里做个极客,也不是说要抢了 Devops 同学的饭碗,但至少要做到摆脱 ...

  3. python第三方模块详细教程(紧急情况宝典)

    目录 一:第三方模块 第三方模块:并不是python自带的 需要基于网络下载! 使用下载第三方模块 需要将python pip添加到环境变量 1.验证pip路径添加成功 2.pycharm添加第三方模 ...

  4. Vue3.2中的setup语法糖,保证你看的明明白白!

    vue3.2 到底更新了什么? 根据原文内容的更新的内容主要有以下 5 块: 1.SSR:服务端渲染优化.@vue/server-renderer包加了一个ES模块创建, 与Node.js解耦,使在非 ...

  5. MySQL更新数据时,日志(redo log、binlog)执行流程

    1:背景 项目需要做Es和数据库的同步,而手动在代码中进行数据同步又是Es的一些不必要的数据同步操作和业务逻辑耦合,所以使用的了读取mysql的binlog日志的方式进行同步Es的数据. 问题1:根据 ...

  6. Java架构系列问题合集-目录

    接下来会做一个系列, 分类说明关于Java项目研发和架构工作需要了解的问题 Java语法 Java语法专题1: 类初始化的构造顺序 https://www.cnblogs.com/milton/p/1 ...

  7. 如何在pyqt中自定义无边框窗口

    前言 之前写过很多关于无边框窗口并给窗口添加特效的博客,按照时间线罗列如下: 如何在pyqt中实现窗口磨砂效果 如何在pyqt中实现win10亚克力效果 如何在pyqt中通过调用SetWindowCo ...

  8. 【JS】函数提升变量提升以及函数声明和函数表达式的区别

    今天看js的变量提升问题,里面提到了函数提升.然后发现自己之前一直把函数声明和函数表达式弄错,导致函数提升出错 一.变量提升 console.log(a) var a=100 //undefined ...

  9. ldconfig及LD_LIBRARY_PATH

    ldconfig是一个动态链接库管理命令,为了让动态链接库为系统所共享,还需运行动态链接库的管理命令:ldconfig.ldconfig 命令的用途,主要是在默认搜寻目录 (/lib和/usr/lib ...

  10. PHP操作Mysql疑问?

    1.Mysql控制台乱码 set character_set_results = 'utf8';