QT QMap介绍与使用

Qt中的QMap介绍与使用,在坛子里逛了一圈,发现在使用QMap中,出现过很多的问题,Map是一个很有用的数据结构。它以“键-值”的形式保存数据。在使用的时候,通过提供字符标示(键)即可得到想要的数据。这个“数据”即可以是一个字符串,也可以是任意对象,当然也包括自己定义的类对象。说明:map是以值传递的形式保存数据的。

1. 基本应用

下面以“键-值”都是QString的例子说明QMap的基本使用方法。更详细的说明,请查看《Qt帮助手册》或其他资源。

  #include <qmap.h> 
  
  #include <iostream> 
  
  using namespace std;  
  
  class MapTest  
  
  {  
  
  public:  
  
      void showMap()  
  
      {  
  
  if(!m_map.isEmpty()) return; //判断map是否为空  
  
  m_map.insert("111", "aaa"); //向map里添加一对“键-值”  
  
  if(!m_map.contains("222")) //判断map里是否已经包含某“键-值”  
  
       m_map.insert("222", "bbb");  
  
  m_map["333"] = "ccc"; //另一种添加的方式  
  
  qDebug("map[333] , value is : " + m_map["333"]); //这种方式既可以用于添加,也可以用于获取,但是你必须知道它确实存在  
  
   
  
  if(m_map.contains("111")){  
  
       QMap<QString,QString>::iterator it = m_map.find("111"); //找到特定的“键-值”对  
  
       qDebug("find 111 , value is : " + it.data()); //获取map里对应的值  
  
  }  
  
  cout<< endl;  
  
  qDebug("size of this map is : %d", m_map.count()); //获取map包含的总数  
  
  cout<< endl;  
  
  QMap<QString,QString>::iterator it; //遍历map  
  
  for ( it = m_map.begin(); it != m_map.end(); ++it ) {  
  
              qDebug( "%s: %s", it.key().ascii(), it.data().ascii()); //用key()和data()分别获取“键”和“值”  
  
          }  
  
   
  
  m_map.clear(); //清空map  
  
      }  
  
  private:  
  
      QMap<QString,QString> m_map; //定义一个QMap对象  
  
  }; 

调用类函数showMap(),显示结果:

  map[333] , value is : ccc  
  
  find 111 , value is : aaa  
  
  size of this map is : 3  
  
  111: aaa  
  
  222: bbb  
  
  333: ccc 

2. 对象的使用

map当中还可以保存类对象、自己定义类对象,例子如下(摘自QT帮助文档《Qt Assistant》,更详细的说明参考之): 以注释形式说明

       #include <qstring.h>     #include <qmap.h>     #include <qstring.h>          //自定义一个Employee类,包含fn、sn、sal属性      class Employee      {      public:          Employee(): sn(0) {}          Employee( const QString& forename, const QString& surname, int salary )              : fn(forename), sn(surname), sal(salary)          { }               QString forename() const { return fn; }          QString surname() const { return sn; }          int salary() const { return sal; }          void setSalary( int salary ) { sal = salary; }           private:          QString fn;          QString sn;          int sal;      };           int main(int argc, char **argv)      {          QApplication app( argc, argv );               typedef QMap<QString, Employee> EmployeeMap; //自定义一个map类型,值为EmployeeMap对象          EmployeeMap map;               map["JD001"] = Employee("John", "Doe", 50000); //向map里插入键-值          map["JW002"] = Employee("Jane", "Williams", 80000);          map["TJ001"] = Employee("Tom", "Jones", 60000);               Employee sasha( "Sasha", "Hind", 50000 );          map["SH001"] = sasha;          sasha.setSalary( 40000 ); //修改map值的内容,因为map采用值传递,所以无效               //批量打印          EmployeeMap::Iterator it;          for ( it = map.begin(); it != map.end(); ++it ) {              printf( "%s: %s, %s earns %d\n",                      it.key().latin1(),                      it.data().surname().latin1(),                      it.data().forename().latin1(),                      it.data().salary() );          }          return 0;      }   
       Program output:       JD001: Doe, John earns 50000      JW002: Williams, Jane earns 80000      SH001: Hind, Sasha earns 50000      TJ001: Jones, Tom earns 60000   

小结:QMap介绍与使用的内容介绍完了,基本是在讲QMap的使用,那么通过本文希望你能了解更多关于QMap的知识。

本文福利,费领取Qt开发学习资料包、技术视频,内容包括(C++语言基础,Qt编程入门,QT信号与槽机制,QT界面开发-图像绘制,QT网络,QT数据库编程,QT项目实战,QT嵌入式开发,Quick模块,面试题等等)↓↓↓↓↓↓见下面↓↓文章底部点击费领取↓↓

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Qt的QMap是一种键值对映射的容器类。它可以将一个键与一个值进行关联,并且可以根据键来查找对应的值。 在QMap中,可以使用"[] "运算符来插入或更新键值对。例如,map["key 1"] = 3; 表示将键"key 1"与值3进行关联。如果键已经存在,那么它的值将会被更新。 另外,还可以使用insert()函数来插入键值对。例如,map.insert("key 3", 3); 与 map["key 3"] = 3; 是等价的操作。 要遍历QMap中的键和值,可以使用keys()函数获取所有的键,并通过循环遍历键来获取对应的值。例如,可以使用以下代码来打印所有的键和值: ``` QList<QString> list = map.keys(); for(int i=0; i<list.length(); i++) { qDebug() << list[i << "," << map.value(list[i]); } ``` 另一种遍历QMap的方法是使用迭代器。通过QMap的begin()和end()函数获取迭代器的起始和结束位置,并通过迭代器进行遍历。例如,可以使用以下代码来打印所有的键和值: ``` QMap<QString, int>::const_iterator it; for(it = map.begin(); it != map.end(); it++) { qDebug() << it.key() << "," << it.value(); } ``` 这样,就可以使用QMap的映射函数来进行键值对的插入、更新和遍历操作了。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* [Qt之QMap基本用法](https://blog.csdn.net/qq_41597943/article/details/129158748)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"] - *2* *3* [QT-QMap和QHash解析](https://blog.csdn.net/hw5230/article/details/130774666)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"] [ .reference_list ]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值