Qt入门系列开发教程【STL篇】QMap红黑树键值对使用方法

举报
鱼酱 发表于 2022/01/12 23:42:05 2022/01/12
【摘要】 来了,老弟,不收藏你就后悔吧 !****点赞👍收藏⭐️留言📝 不迷路~~~ 😈「作者主页 」:鱼酱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的位置
查找元素
存入元素
键值列表
删除指定key元素
值的列表
QMap
contains
count
clear
equal_range
empty
find
insert
keys
take
values
//是否包含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

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。