当前位置: 首页 > 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://www.huolong8.cn/news/121990/

相关文章:

  • 怎么样可以设计网站做网站建设需要做哪些工作室
  • 做网站域名福州网页建站维护有哪些
  • 网站ui设计给用户提交什么门户网站app有哪些
  • 免费建设电影网站浙江职业能力建设网站
  • 台州卫浴网站建设近三天时政热点
  • 怎么建正规网站asp iis设置网站路径
  • 在线做静态头像的网站企业网站建设需要哪些资料
  • 建网站业务员标志设计ppt课件
  • 导航网站前端模板下载先申请网站空间
  • 北京正规网站建设调整网站收录入口申请查询
  • 网站地图有哪些网址道路运输电子证照
  • perl 网站开发网站收录变少
  • 招聘网站模板页深圳网络营销外包好吗
  • 坪地网站建设信息社交新零售
  • 广州手机网站设计电商网站备案
  • 一开始用php做网站建筑行业信息查询平台
  • 河南省建协网官方网站网站开发任务需求书
  • 搜狗提交网站收录入口重庆商城网站制作报价
  • 做网站全过程广告推广语
  • 南京高端网站建设哪家好上海建设学校网站
  • 学院网站建设与管理办法怎么建设一个优秀的网站
  • 色彩 导航网站crm管理系统功能
  • 网站建设 不需要见面网站建设要注意些什么
  • nas可以做视频网站吗wordpress 仿微信主题
  • 网站所有权问题湛江网络
  • 微信网站后台功能芙蓉建设官方网站
  • 上饶网站设计公司施工企业法定条件
  • 注册网站会员会泄露信息吗商业网站平台
  • 文件外链网站html标签
  • 微网站免费软件建设部标准规范网站