当前位置: 首页 > news >正文

手机阅读网站开发原因中国机械设备制造网

手机阅读网站开发原因,中国机械设备制造网,简单大气网站欣赏,药品加工厂做网站描述 QMap类是一个模板类#xff0c;提供基于红黑树的字典功能。 QMapKey, T是Qt中的通用容器类之一。它存储(key, value)键值对#xff0c;并提供快速查找与特定键相关联的值。 QMap和QHash提供非常相似的功能。它们的区别在于#xff1a; QHash的查找速度平均比Q…描述 QMap类是一个模板类提供基于红黑树的字典功能。 QMapKey, T是Qt中的通用容器类之一。它存储(key, value)键值对并提供快速查找与特定键相关联的值。 QMap和QHash提供非常相似的功能。它们的区别在于 QHash的查找速度平均比QMap更快。有关详细信息请参阅算法复杂度。 当迭代QHash时项目的排序是任意的。而使用QMap时项目总是按键排序的。 QHash的键类型必须提供operator()和一个全局qHash(Key)函数。QMap的键类型必须提供operator()来指定一个全序。自Qt 5.8.1起即使底层的operator()没有提供全序也可以安全地将指针类型用作键。 以下是一个使用QString类型键和int类型值的示例QMap QMapQString, int map;要将(key, value)对插入到map中可以使用operator : map[one] 1;map[three] 3;map[seven] 7;这将把以下三个(key, value)对插入到QMap中(one, 1), (three, 3)和(seven, 7)。另一种插入项到map的方法是使用insert() map.insert(twelve, 12);要查找一个值可以使用operator或value() int num1 map[thirteen];num2 map.value(thirteen);如果在map中不存在指定的键这些函数将返回一个默认构造的值。 如果想要检查map是否包含某个特定的键可以使用contains() int timeout 30;if (map.contains(TIMEOUT))timeout map.value(TIMEOUT);还有一个value()重载如果map中不存在指定的键可以使用其第二个参数作为默认值 int timeout map.value(TIMEOUT, 30);一般来说我们建议在map中查找键时使用contains()和value()而不是operator。原因是operator如果没有具有相同键的项除非map是const会默默地向map中插入一个项。例如下面的代码片段将在内存中创建1000个项 // 错误QMapint, QWidget * map;...for (int i 0; i 1000; i) {if (map[i] okButton)cout Found button at index i endl;}为避免这个问题在上面的代码中将map[i]替换为map.value(i)。 如果想要遍历存储在QMap中的所有(key, value)对可以使用迭代器。QMap提供Java风格的迭代器QMapIterator和QMutableMapIterator和STL风格的迭代器QMap::const_iterator和QMap::iterator。以下是如何使用Java风格迭代器遍历QMapQString, int的示例 QMapIteratorQString, int i(map);while (i.hasNext()) {i.next();cout i.key() : i.value() endl;}这是相同的代码但是这次使用STL风格的迭代器 QMapQString, int::const_iterator i map.constBegin();while (i ! map.constEnd()) {cout i.key() : i.value() endl;i;}项目按键的升序顺序遍历。 通常QMap允许每个键只有一个值。如果您使用已经存在于QMap中键调用insert()则先前的值将删除。例如 map.insert(plenty, 100);map.insert(enty, 2000);// map.value(plenty) 2000然而您可以通过使用insertMulti()而不是insert()或使用便利子类QMultiMap来为每个键存储多个值如果要检索单个键的所有值可以使用values(const Key key)它返回一个QList QListint values map.values(plenty);for (int i 0; i values.size(); i)cout values(i) endl;具有相同键的项从最近插入到最早插入可用。另一种方法是调用find()以获取具有键的第一个项的STL风格迭代器并从那里进行迭代 QMapQString, int::iterator i map.find(plenty);while (i ! map.end() i.key() plenty) {cout i.value() endl;i;}如果只需要从中提取值而是键还可以foreach QMapQString, int map;...foreach (int value map)cout value endl;可以通过多种方式从map中删除项。一种方法是调用remove()这将删除具有给定键的任何项。另一种方法是使用QMutableMapIterator::remove()此外您可以使用clear()来清除整个map。 QMap的键和值数据类型必须是可赋值的数据类型。这涵盖了您可能遇到的大多数数据类型但编译器不会让您以值的形式存储QWidget反而存储QWidget *。此外QMap的键类型必须提供operator()。QMap使用它来保持其项目排序并假定如果x y也没有y x则两个x和y相等。 示例 #ifndef EMPLOYEE_H#define EMPLOYEE_Hclass{public:Employee() {}Employee(const QString name, const QDate dateOfBirth);...private:QString myName;QDate myDateOfBirth;};inline bool operator(const Employee e1, const Employee e2){if (e1.name() ! e2.name())return e1.name() e2.name();return e1.dateOfBirth() e2.dateOfBirth();}#endif // EMPLOYEE_H在示例中首先比较员工的姓名如果它们相等比较它的出生日期以打平局。 常用方法 下面是常用的QMap方法的介绍 insert(key, value)将一个(key, value)对插入到map中。如果key已经存在于map中则会覆盖原有的value。insertMulti(key, value)将一个(key, value)对插入到map中允许一个key对应多个value。可以通过values(key)方法获取所有与key对应的value列表。remove(key)删除map中指定的key及其对应的value。clear()清空map移除其中的所有项。contains(key)判断map中是否存在指定的key。value(key, defaultValue)返回与指定的key关联的value。如果key不存在于map中则返回默认值defaultValue。count()返回map中键值对的数量。keys()返回map中所有的键构成的列表。values()返回map中所有的值构成的列表。isEmpty()判断map是否为空即是否不包含任何键值对。size()返回map中键值对的数量。begin() / constBegin()返回指向map中第一个键值对的迭代器。end() / constEnd()返回指向map中最后一个键值对之后位置的迭代器。find(key)查找map中第一个具有指定key的键值对并返回指向该键值对的迭代器。 iterator / const_iterator提供STL风格的迭代器可以用于遍历map中的键值对。 erase()方法 QMap的erase()方法用于从map中删除指定的键值对。用法如下 erase(iterator)删除迭代器指向的键值对并返回指向下一个键值对的迭代器。 例如 QMapQString, int map; map.insert(key1, 10); map.insert(key2, 20);QMapQString, int::iterator it map.begin(); it map.erase(it); // 删除迭代器指向的键值对返回指向下一个键值对的迭代器 // 现在it指向键为key2的键值对需要注意的是当使用erase()方法删除元素后迭代器会失效如果还需要继续遍历map应该使用返回的迭代器继续操作。 示例 #include QMap #include QString #include QDebugint main() {QMapQString, int map;// 添加键值对map.insert(One, 1);map.insert(Two, 2);map.insert(Three, 3);// 遍历并打印map中的键值对qDebug() Map content:;QMapQString, int::const_iterator iter;for (iter map.constBegin(); iter ! map.constEnd(); iter) {qDebug() iter.key() : iter.value();}// 删除指定的键值对map.remove(Two);// 查找键为Three的键值对qDebug() Value of key Three:;if (map.contains(Three)) {qDebug() map.value(Three);} else {qDebug() Key not found.;}// 获取所有键qDebug() All keys:;QListQString keys map.keys(); foreach (const QString key, keys) {qDebug() key;}// 获取所有值qDebug() All values:;QListint values map.values(); foreach (int value, values) {qDebug() value;}return 0; }运行以上示例代码输出结果如下 Map content: One : 1 Two : 2 Three : 3Value of key Three: 3All keys: One ThreeAll values: 1 3注意 QMapint, int* map;QMapint, int*::iterator it map.begin();while (it ! map.end()) {map.erase(it);it;}以上使用QMap的erase()是错误的。 应改为 QMapint, int* map;map[1] new int(1);map[2] new int(2);map[3] new int(3);QMapint, int*::iterator it map.begin();while (it ! map.end()) {// 接受返回值进行循环it map.erase(it);}
http://wiki.neutronadmin.com/news/121990/

相关文章:

  • 网站推广排名服务科技部政务服务平台
  • 周至县做网站淮南服装网站建设费用
  • 北京网站建站深圳宝安中心医院
  • 怎么做qq业务网站建网站多少钱一个平台
  • 湖南城乡住房建设厅网站网站建设可行性分析报告模板
  • 丹灶网站建设深圳装修公司口碑排名
  • 网站开发下载哪个同泰公司网站公司查询
  • 网站建设怎么链接表格大学生创新创业大赛报名入口
  • 深圳网站建设黄浦网络 骗子公司邮箱后缀正确的是以下
  • 招聘 网站建设表白网页在线生成制作源码
  • 建设部网站电话丽水微信网站建设公司
  • 新闻类的网站如何做优化我的世界做壁纸网站
  • 滕州网站建设猎头做单网站
  • 杭州网站建设品牌杭州seo相关网站
  • 中国林业建设协会网站wordpress 突然404
  • 做视频挣钱的网站趣快排seo是什么
  • 网站服务器配置要求夫妻找做伙食饭工作哪个网站好
  • 房地产管理局网站wordpress mysql pdo
  • 东莞做网站哪家好电商网站建设实训报告心得
  • 河南网站推广怎么做活动策划网站有哪些
  • 简洁大气企业网站做微信公众号整合网站
  • 微网站建设比较全面的是wordpress 封面
  • 开发网站需要什么硬件学校网站建设说明
  • 网站开发的需求分析论文采购系统有哪些
  • 枣庄市建设项目环评备案网站php做调查问卷网站
  • 做外贸找客户的网站关于网站建设费用
  • 做网站都需要哪些知识整站优化该怎么做
  • 网站设计图尺寸网站建设教程资源
  • 珠海网站建设哪个好薇音速企业名录搜索软件
  • 菜鸟学做网站的步骤工信部会抽查网站么