QMap使用
本文标题:QMap使用 本文地址:https://www.techieliang.com/2017/12/537/
1. 简单范例
QMap与std::map相同,会自动根据key(第一项)进行升序排列
- QMap<QString,int> m_map;
- m_map["a"] = 10;//插入方式1
- m_map["as"] = 13;
- m_map.insert("b",22);//插入方式2
- m_map.insert("ba",23);
- auto find_index = m_map.find("as");//搜索
- if(find_index!=m_map.end()) {//返回为end表明未搜索到
- qDebug()<<find_index.key()<<find_index.value();
- }
- qDebug()<<m_map.value("a");//直接搜索,根据值key找值
- qDebug()<<m_map.value("aa");//没这项
- qDebug()<<m_map.key(13);//根据值找key
- qDebug()<<m_map.key(14);//没这项
返回结果:
- "as" 13
- 10
- 0
- "as"
- ""
相关帮助文档请见官网
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 likeint
anddouble
,
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
- 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)//可以导入std::map
QMap使用的更多相关文章
- 第37课 深度解析QMap与QHash
1. QMap深度解析 (1)QMap是一个以升序键顺序存储键值对的数据结构 ①QMap原型为 class QMap<K, T>模板 ②QMap中的键值对根据Key进行了排序 ③QMap中 ...
- QMap
#include <QCoreApplication> #include<QMap> #include<QDebug> int main(int argc, cha ...
- QMap与QHash
关联容器可以保存任意多个具有相同类型的项,且它们由一个键索引.Qt提供两个主要的关联容器类:QMap<K, T>和QHash<K, T>. QMap<K, T>是一 ...
- QVariant类学习(非常强大的类型,甚至能处理QMap<QString ,QVariant>)
详细描述: QVariant类作为一个最为普遍的Qt数据类型的联合. 因为c++禁止没有构造函数和析构函数的联合体,许多继承的Qt类不能够在联合体当中使用.(联合体当中的变量共用一个存储区),没有了联 ...
- c++ map与 qt QMap insert 区别
当插入相同key的字段时, c++ map 会保留原来的字段, QMap 则会取代原来的字段.
- 1.QT中的容器QVector,QList,QSet,QMap,QQueue,QStack,QMultiMap,QSingleList等
1 新建一个项目 在pro文件中只需要加上CONFIG += C++11 main.cpp #include <QMap> int main() { QMap<int,QStrin ...
- QMap迭代器
QMap<int, QString> intToStr; intToStr[] = "test" for (auto iter = intToStr.begin(); ...
- QT 信号槽connect中解决自定义数据类型或数组作为函数参数的问题——QT qRegisterMetaType 注册MetaType——关键:注册自定义数据类型或QMap等容器类
一般情况下信号槽直接连接方式不会出现问题,但是如果信号与槽在不同线程或Qt::QueuedConnection方式连接,可能会在连接期间报以下类似问题,如: QObject::connect: Can ...
- Qt532.容器QMap&QMultiMap
PS: QMap 一个Key 只能对应 一个Value (不是绝对的情况...内部都有 一个key对应多个value的机制) PS: QMultiMap 一个Key 可以对应 多个Value PS: ...
- 遍历QMap引发异常处理
引言 用常规方法遍历QMap,删除满足条件元素时出现“读取位置0xXXX时发生访问冲突”.查看“调用堆栈”指向QMap<int,int>::iterator::operator++()和Q ...
随机推荐
- 使用Selenium时,如何选择ChromeDriver驱动版本对应Chrome浏览器版本
ChromeDriver版本 支持的Chrome版本 v2.46 v72-74 v2.45 v71-73 v2.44 v70-72 v2.43 v69-71 v2.42 v68-70 v2.41 ...
- Python之路(三)
今天这篇文章是对上一篇文章的补充,主要说一下与int和str有关的几个函数. ------------------------------------------------------------( ...
- 20155207JAVA第十二周课堂练习
20155207JAVA第十二周课堂练习 教材代码检查--P98 修改教材P98 Score2.java, 让执行结果数组填充是自己的学号 Arrays和String单元测试 在IDEA中以TDD的方 ...
- # 20155236 2016-2017-2 《Java程序设计》第二周学习总结
20155236 2016-2017-2 <Java程序设计>第二周学习总结 教材学习内容总结 对于类型.变量.运算符.流程控制等等的学习.在其中包含着基本的语法元素,还有基本的逻辑语句. ...
- 20155315 2016-2017-2 实验二《Java面向对象程序设计》实验报告
实验内容 1.初步掌握单元测试和TDD 2.理解并掌握面向对象三要素:封装.继承.多态 3.初步掌握UML建模 4.熟悉S.O.L.I.D原则 5.了解设计模式 实验知识点 1.参考Intellj I ...
- 20155327 2016-2017-2 《Java程序设计》第一周学习总结
20155327 2016-2017-2 <Java程序设计>第一周学习总结 教材学习内容总结 浏览教材,根据自己的理解每章提出一个问题 1.JAVA SE中JVM,JRE与JDK分别是什 ...
- 学号 2016-2017-20155329《Java程序设计》课程总结
学号 2016-2017-20155329<Java程序设计>课程总结 (按顺序)每周作业链接汇总 预备作业1:想象中的师生关系 预备作业2:C语言水平调查以及认为自己最强的一项技能和毕业 ...
- hive 动态分区插入
首先需要进行以下设置: set hive.exec.dynamic.partition=true; set hive.exec.dynamic.partition.mode=nonstrict; se ...
- 根据xml生成相应的对象类
根据xml生成相应的class对象,听起来很难其实很简单,用xsd.exe就能办到 打开vs 命令行运行xsd.exe 你的xml文件地址 空格/outputdir:存放xsd的地址 ok,这是生成了 ...
- 2019年猪年颁奖典礼、公司年会、跨年晚会、科技会议、年终答谢会之幕布背景展板PSD模板-第三部分
16套--2019年猪年颁奖典礼.公司年会.跨年晚会.科技会议.年终答谢会之幕布.背景和展板PSD模板,免费颁奖典礼PSD展板背景幕布,下载地址:百度网盘,https://pan.baidu.com/ ...