Qt入门系列开发教程【STL篇】QMap红黑树键值对使用方法
【摘要】
来了,老弟,不收藏你就后悔吧 !****点赞👍收藏⭐️留言📝 不迷路~~~
😈「作者主页 」:鱼酱2333 😈「 B站首页 」:鱼酱2333 😈「本文录入专栏」:Qt入门系列开...
来了,老弟,不收藏你就后悔吧 !****点赞👍收藏⭐️留言📝 不迷路~~~
😈「作者主页 」:鱼酱2333
😈「 B站首页 」:鱼酱2333
😈「本文录入专栏」:Qt入门系列开发教程
😈「本文内容」:QMap红黑树键值对象使用方法
0.应用场景
字典场景,Key+Value形式。Key是唯一值。
1.QMap
简介
QMap是Qt的一个模板类,它是基于红黑树算法的一套字典。
QMap<Key,T>是Qt容器类型的一种,它通过(Key, value)存储一对值,并通过Key可以查找与之关联的value的值。
//是否包含key
bool contains(const Key &key) const
//返回与键 key 关联的项目数。
QMap::size_type count(const Key &key) const
//清空
void clear()
//判空
bool empty() const
//返回一对迭代器,它们界定了存储在 key 下的值 [first, second) 的范围。
QPair<QMap::iterator, QMap::iterator> equal_range(const Key &key)
//查找指定的key元素
QMap::iterator find(const Key &key)
//获取头
T &first()
//添加
void insert(const QMap<Key, T> &map)
//key值得列表
QList<Key> keys() const
//删除指定key元素
T take(const Key &key)
//返回值的列表
QList<T> values() const
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
- 21
- 22
- 23
- 24
- 25
- 26
- 27
- 28
- 29
- 30
- 31
- 32
- 33
- 34
- 35
3.Example
追加头文件
#include <QMap>
- 1
- 2
QMap添加
QMap<QString, QString> map;
map.insert("3name", "leo");
map.insert("1age", "18");
map.insert("2like", "eat");
map.insert("4sex", "man");
- 1
- 2
- 3
- 4
- 5
QMap<quint32,QString> mapNames;
mapNames.insert(1,"张三");
qDebug()<<mapNames;
mapNames.insert(1,"张三");
qDebug()<<mapNames;
mapNames.insert(2,"张四");
mapNames.insert(3,"张五");
mapNames.insert(4,"张六");
mapNames[5] = "张七";
qDebug()<<mapNames;
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
QMap遍历
QMap<quint32,QString> mapNames={qMakePair(2,"张2"),qMakePair(1,"张1"),qMakePair(3,"张3"),qMakePair(0,"张0"),};
for(auto it:mapNames)
{
qDebug()<<it;
}
for(auto it =mapNames.begin();it!=mapNames.end();it++)
{
qDebug()<<*it;
}
for(int i = 0;i<mapNames.size();i++)
{
//XXXXX
qDebug()<<mapNames[i];
}
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 16
QMap查找
//查
QMap<quint32,QString> mapNames={qMakePair(2,"张2"),qMakePair(1,"张1"),qMakePair(3,"张3"),qMakePair(0,"张0"),};
auto it = mapNames.find(1);
//直接访问 mapNames[1]
- 1
- 2
- 3
- 4
QMap删除
void demoMapDel()
{
QMap<quint32,QString> mapNames={qMakePair(2,"张2"),qMakePair(1,"张1"),qMakePair(3,"张3"),qMakePair(0,"张0"),};
qDebug()<<mapNames;
auto it = mapNames.begin();
mapNames.erase(it);
qDebug()<<mapNames;
//删
mapNames.clear();
}
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
QMap综合例子
struct Person
{
QString strName;
QString strId;
quint16 uiAge;
};
QMap<QString, Person> m; //自定义一个map类型,值为EmployeeMap对象
m["john"] = Person{"john", "111", 12}; //向map里插入键-值
m["lilei"] = Person{"lilei", "222", 13};
m["tom"] = Person{"tom", "Jones", 14};
//批量打印
for(auto &it:m)
{
if(it.strName =="tom")
{
//让他500岁
it.uiAge=500;
}
}
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
- 21
- 22
文章来源: yujiang.blog.csdn.net,作者:鱼酱2333,版权归原作者所有,如需转载,请联系作者。
原文链接:yujiang.blog.csdn.net/article/details/122435990
【版权声明】本文为华为云社区用户转载文章,如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱:
cloudbbs@huaweicloud.com
- 点赞
- 收藏
- 关注作者
评论(0)