Qt:QMap
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: |
2、构造
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 |
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】凌霞软件回馈社区,博客园 & 1Panel & Halo 联合会员上线
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】博客园社区专享云产品让利特惠,阿里云新客6.5折上折
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 浏览器原生「磁吸」效果!Anchor Positioning 锚点定位神器解析
· 没有源码,如何修改代码逻辑?
· 一个奇形怪状的面试题:Bean中的CHM要不要加volatile?
· [.NET]调用本地 Deepseek 模型
· 一个费力不讨好的项目,让我损失了近一半的绩效!
· PowerShell开发游戏 · 打蜜蜂
· 在鹅厂做java开发是什么体验
· 百万级群聊的设计实践
· WPF到Web的无缝过渡:英雄联盟客户端的OpenSilver迁移实战
· 永远不要相信用户的输入:从 SQL 注入攻防看输入验证的重要性