版权声明:若无来源注明,Techie亮博客文章均为原创。 转载请以链接形式标明本文标题和地址:
本文标题:QMap使用     本文地址:https://www.techieliang.com/2017/12/537/

1. 简单范例

QMap与std::map相同,会自动根据key(第一项)进行升序排列

  1. QMap<QString,int> m_map;
  2. m_map["a"] = 10;//插入方式1
  3. m_map["as"] = 13;
  4. m_map.insert("b",22);//插入方式2
  5. m_map.insert("ba",23);
  6. auto find_index = m_map.find("as");//搜索
  7. if(find_index!=m_map.end()) {//返回为end表明未搜索到
  8. qDebug()<<find_index.key()<<find_index.value();
  9. }
  10. qDebug()<<m_map.value("a");//直接搜索,根据值key找值
  11. qDebug()<<m_map.value("aa");//没这项
  12. qDebug()<<m_map.key(13);//根据值找key
  13. qDebug()<<m_map.key(14);//没这项

返回结果:

  1. "as" 13
  2. 10
  3. 0
  4. "as"
  5. ""

相关帮助文档请见官网

erase删除某项,由于map的key具有唯一性,可以通过m_map[XX]=YY;修改已有项的值,若此项并不存在则会创建新的。

2. 其他

2.1. value/key方法返回值

value若查找不到目标会返回默认值,对于默认值得解释:

Returns a list containing all the values in the map, in
ascending order of their keys. If a key is associated with multiple
values, all of its values will be in the list, and not just the most
recently inserted one.

如果没有主动设置默认值,返回Qt默认值,此值在文档的容器介绍有说明

The documentation of certain container class functions refer to default-constructed values; for example, QVector automatically initializes its items with default-constructed values, and QMap::value()
returns a default-constructed value if the specified key isn’t in the
map. For most value types, this simply means that a value is created
using the default constructor (e.g. an empty string for QString). But for primitive types like int and double,
as well as for pointer types, the C++ language doesn’t specify any
initialization; in those cases, Qt’s containers automatically initialize
the value to 0.

key方法若找不到相应key,同样返回默认值。

2.2. QMap与std::map

QMap使用Iterator.key(),和Iterator.value()方法获取第一个或第二个元素的值。

而std::map使用Iterator->first(), Iterator->second()来获取第一个或第二个元素的值

2.3. std::map<Key, T> QMap::toStdMap() const

QMap实现了与std::map相互转换,toStdMap转到std,使用QMap的构造函数从std::map转到QMap

  1. QMap(std::initializer_list<std::pair<Key, T> > list)
  2. QMap(const QMap<Key, T> &other)
  3. QMap(QMap<Key, T> &&other)
  4. QMap(const std::map<Key, T> &other)//可以导入std::map
转载请以链接形式标明本文标题和地址:Techie亮博客 » QMap使用

QMap使用的更多相关文章

  1. 第37课 深度解析QMap与QHash

    1. QMap深度解析 (1)QMap是一个以升序键顺序存储键值对的数据结构 ①QMap原型为 class QMap<K, T>模板 ②QMap中的键值对根据Key进行了排序 ③QMap中 ...

  2. QMap

    #include <QCoreApplication> #include<QMap> #include<QDebug> int main(int argc, cha ...

  3. QMap与QHash

    关联容器可以保存任意多个具有相同类型的项,且它们由一个键索引.Qt提供两个主要的关联容器类:QMap<K, T>和QHash<K, T>. QMap<K, T>是一 ...

  4. QVariant类学习(非常强大的类型,甚至能处理QMap<QString ,QVariant>)

    详细描述: QVariant类作为一个最为普遍的Qt数据类型的联合. 因为c++禁止没有构造函数和析构函数的联合体,许多继承的Qt类不能够在联合体当中使用.(联合体当中的变量共用一个存储区),没有了联 ...

  5. c++ map与 qt QMap insert 区别

    当插入相同key的字段时, c++  map 会保留原来的字段, QMap 则会取代原来的字段.

  6. 1.QT中的容器QVector,QList,QSet,QMap,QQueue,QStack,QMultiMap,QSingleList等

    1  新建一个项目 在pro文件中只需要加上CONFIG += C++11 main.cpp #include <QMap> int main() { QMap<int,QStrin ...

  7. QMap迭代器

    QMap<int, QString> intToStr; intToStr[] = "test" for (auto iter = intToStr.begin(); ...

  8. QT 信号槽connect中解决自定义数据类型或数组作为函数参数的问题——QT qRegisterMetaType 注册MetaType——关键:注册自定义数据类型或QMap等容器类

    一般情况下信号槽直接连接方式不会出现问题,但是如果信号与槽在不同线程或Qt::QueuedConnection方式连接,可能会在连接期间报以下类似问题,如: QObject::connect: Can ...

  9. Qt532.容器QMap&QMultiMap

    PS: QMap 一个Key 只能对应 一个Value (不是绝对的情况...内部都有 一个key对应多个value的机制) PS: QMultiMap 一个Key 可以对应 多个Value PS:  ...

  10. 遍历QMap引发异常处理

    引言 用常规方法遍历QMap,删除满足条件元素时出现“读取位置0xXXX时发生访问冲突”.查看“调用堆栈”指向QMap<int,int>::iterator::operator++()和Q ...

随机推荐

  1. Wtrofms

    一.安装 安装:pip3 install wtforms 二.使用1(登录) from flask import Flask, render_template, request, redirect f ...

  2. java入门---运算符&算术运算符&自增自减运算符&关系运算符&位运算符

        计算机的最基本用途之一就是执行数学运算,作为一门计算机语言,Java也提供了一套丰富的运算符来操纵变量.我们可以把运算符分成以下几组: 算术运算符 关系运算符 位运算符 逻辑运算符 赋值运算符 ...

  3. 笔记-scrapy-selector

    笔记-scrapy-selector scrapy版本:1.5.0 1.总述 scrapy内置selector建立在lxml上. 2.使用 可以使用xpath和css方法来进行解析,两者都返回列表: ...

  4. Creating Isomorphic Apps with Node.js, React, and Express

    In this article, we’re going to use following software: React: the UI framework that can rendered on ...

  5. 修改cmd为utf-8编码:

    1.组合键WIN+R键,组合键后就会弹出窗口,然后输入CMD,回车: 2.要修改成UTF8编码,输入命令CHCP 65001(设置为65001): 3.鼠标放在命令窗口的标题部分右键,在弹出的右键菜单 ...

  6. 成都Uber优步司机奖励政策(4月16日)

    滴快车单单2.5倍,注册地址:http://www.udache.com/ 如何注册Uber司机(全国版最新最详细注册流程)/月入2万/不用抢单:http://www.cnblogs.com/mfry ...

  7. lnmp环境搭建(centos6.9+mysql5.7+php7.1+nginx1.10)

    安装前准备:CentOS 6.9 64位 最小化安装 yum install -y make gcc gcc-c++ perl zlib-devel libaio libpng libpng-deve ...

  8. 身份证扫描识别/身份证OCR识别的正确姿势,你get到了吗?

    自从国家规定电信实名制之后,实名制已经推广到各个领域:办理通信业务需要实名制.银行开户需要实名制.移动支付需要实名制,就连注册个自媒体账户都需要实名制. 而实名制的背后,就是身份证信息的采集和录入验证 ...

  9. Selenide 阶段性总结介绍(UI自动化测试工具)

    今天给大家介绍一个比较新的UI自动化测试工具-- Selenide.确实是比较新的,国内应该还没有多少人用它.在百度和google上你只能搜到一个中文帖子简单介绍了一下.如果你想用这个工具,不可避免的 ...

  10. Jmeter使用HTTP代理服务器录制脚本

    使用Jmeter录制脚本通常使用Badboy工具录制或者Jmeter自带的HTTP代理服务器录制脚本,这里说一下使用HTTP代理服务器录制时遇到的问题. 1.  Jmeter安装 下载得到Jmeter ...