QMap的基本使用
来源:互联网 发布:数据挖掘导论 豆瓣 编辑:程序博客网 时间:2024/05/01 08:53
1. 基本应用
下面以“键-值”都是QString的例子说明QMap的基本使用方法。
#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
0 0
- QMap的基本使用
- QMap的基本使用
- QMap的基本使用
- QMap的使用
- 转QMap的使用
- QMap 的使用
- QMap的使用
- QMap的使用
- QMap的介绍和使用
- Qt中使用QMap的
- Qt中QMap的使用注意一点
- Qt中QMap的使用注意一点
- QSharedPointer与QMap混合使用的注意事项
- QMap使用类的对象作为key
- QMap的key的使用 value的使用
- QMap使用注意事项积累
- Qlist+QMap+QVariant使用
- QMap的相关操作
- 最新版eclipse Mars 配置在线更新svn插件。
- 【黑马程序员】集合框架(上)——Java复习笔记
- mybatis foreach
- openstack中region、az、host aggregate、cell 概念
- 010 - Regular Expression Matching
- QMap的基本使用
- 段错误
- android中tabhost学习
- 第六章 注解式控制器详解(3)——跟着开涛学SpringMVC
- javascript 基本语法
- Centos6.5下安装Memcached完整示例
- 011 - Container With Most Water
- Fresco前传(4)
- iOS 用CornerStone配置SVN,HTTP及svn简单使用说明