Qt容器:QMap

article/2025/10/23 22:03:58

一、描述

QMap<Key, T> 是 Qt 的通用容器类之一。 它存储(键,值)对并提供按键快速查找。

二、成员函数

1、QMap::const_iterator constFind(const Key &key)

返回一个 const 迭代器,该迭代器指向map中具有 key 键的项目。如果地图不包含带键的项目,则该函数返回 constEnd()。

    QMap<QString, int> map;map["one"] = 1;map["three"] = 3;map["seven"] = 7;auto it = map.constFind("one");qDebug()<<it.key()<<it.value();

2、constKeyValueBegin() 、constKeyValueEnd()

    QMap<QString, int> map;map["one"] = 1;map["three"] = 3;map["seven"] = 7;for(auto it = map.constKeyValueBegin();it != map.constKeyValueEnd();++it)qDebug()<<it->first<<it->second;

 3、bool contains(const Key &key)

是否包含键。

4、 QMap::size_type count(const Key &key)

返回与键 key 关联的项目数。

5、QPair<QMap::iterator, QMap::iterator> equal_range(const Key &key) 

返回两个迭代器。

迭代器1是指向当前 map 容器中第一个大于或等于 key 的键值对的迭代器(lowerBound())。

迭代器2是指向当前 map 容器中第一个大于 key 的键值对的迭代器。(upperBound())

    QMap<QString, int> map;map["one1"] = 1;map["one2"] = 2;map["one3"] = 3;map["one4"] = 4;map["one5"] = 5;auto pair = map.equal_range("one2");qDebug()<<(pair.first.key())<<(pair.first.value());qDebug()<<(pair.second.key())<<(pair.second.value());

6、QMap::iterator erase(QMap::const_iterator pos)

      QMap::iterator erase(QMap::const_iterator first, QMap::const_iterator last)

从映射中移除迭代器 pos 指向的 (key, value) 对,并返回指向映射中下一项的迭代器。

            auto it = map.begin();while (it != map.end()){if(......)it = map.erase(it);else++it;}

7、QMap::iterator find(const Key &key)

查找key,若找不到返回end()。

8、T & first() / const Key & firstKey()       T & last() / const Key & lastKey()

返回map中第一个、最后一个 value / key的引用。

9、QMap::iterator insert(const Key &key, const T &value)

     QMap::iterator insert(QMap::const_iterator pos, const Key &key, const T &value)

插入一个具有键 key 和 value 值的新项目。如果已经有一个带有键 key 的项目,则该项目的值将替换为 value。

      void insert(QMap<Key, T> &&map)

移动map中的所有项。如果map是隐式共享的,那么项目将被复制。

10、Key key(const T &value, const Key &defaultKey = Key())

返回第一个具有 value 值的键,如果映射不包含具有 value 值的项目,则返回 defaultKey。

此函数可能很慢(O(n)),因为 QMap 的内部数据结构针对按键而不是按值进行快速查找进行了优化。

11、keyBegin() / keyEnd()        keyValueBegin() / keyValueEnd()

键 / 值的迭代器。

12、QList<Key> keys()以升序返回包含映射中所有键的列表。顺序保证与 values() 使用的顺序相同。

此函数以线性时间(O(n))创建一个新列表。可以通过从 keyBegin() 迭代到 keyEnd() 来避免所需的时间和内存使用。

13、QList<Key> keys(const T &value)

返回一个列表,其中包含按升序排列的与 value 值关联的所有键。

此函数可能很慢(O(n)),因为 QMap 的内部数据结构针对按键而不是按值进行快速查找进行了优化。

14、QMap::iterator lowerBound(const Key &key)

返回一个迭代器,该迭代器指向第一个大于或等于 key 的键值对。

    QMap<int, QString> map;map.insert(1, "one");map.insert(5, "five");map.insert(10, "ten");map.lowerBound(0);      // returns iterator to (1, "one")map.lowerBound(1);      // returns iterator to (1, "one")map.lowerBound(2);      // returns iterator to (5, "five")map.lowerBound(10);     // returns iterator to (10, "ten")map.lowerBound(999);    // returns end()

15、QMap::iterator upperBound(const Key &key)

 返回一个迭代器,该迭代器指向第一个大于 key 的键值对。

 QMap<int, QString> map;map.insert(1, "one");map.insert(5, "five");map.insert(10, "ten");map.upperBound(0);      // returns iterator to (1, "one")map.upperBound(1);      // returns iterator to (5, "five")map.upperBound(2);      // returns iterator to (5, "five")map.upperBound(10);     // returns end()map.upperBound(999);    // returns end()

16、QMap::size_type remove(const Key &key)

删除所有具有 key 键的项目。如果删除之前key存在于容器中,则返回 1,否则返回 0。

17、template <typename Predicate> QMap::size_type removeIf(Predicate pred) 

移除谓词 pred 为其返回 true 的所有元素。

该函数支持采用 QMap<Key, T>::iterator 类型参数或 std::pair<const Key &, T &> 类型参数的谓词。

返回删除的元素数。

    QMap<int, QString> map;map.insert(1, "one");map.insert(5, "five");map.insert(10, "ten");map.removeIf([](const QMap<int, QString>::iterator it){return it.key() > 8;});map.removeIf([](const std::pair<int, QString> pair){return pair.first > 8;});for(auto & m : map){qDebug()<<m;}

18、T take(const Key &key)

从地图中删除具有键 key 的项目并返回与其关联的

如果该项目在地图中不存在,则该函数仅返回一个默认构造的值。

如果不使用返回值,remove() 效率更高。

19、T value(const Key &key, const T &defaultValue = T())

返回与键key关联的值。如果不包含带key的项目,则返回 defaultValue。

20、QList<T> values() 

返回一个包含映射中所有值的列表,按其键的升序排列。

此函数以线性时间创建一个新列表。可以通过从 keyValueBegin() 迭代到 keyValueEnd() 来避免所需的时间和内存使用。


三、相关非成员

1、template <typename Key, typename T, typename Predicate> qsizetype erase_if(QMap<Key, T> &map, Predicate pred)

removeIf() 用法相似。

    QMap<int, QString> map;map.insert(1, "one");map.insert(5, "five");map.insert(10, "ten");erase_if(map,[](const QMap<int, QString>::iterator it){return it.key() > 8;});erase_if(map,[](const std::pair<int, QString> pair){return pair.first > 8;});for(auto & m : map){qDebug()<<m;}

http://chatgpt.dhexx.cn/article/3h51IPst.shtml

相关文章

java swing 实现简单计算器

gitee仓库地址&#xff1a;Calculator: 简单计算器 (gitee.com)https://gitee.com/misaka10000/calculator 常量定义&#xff1a; package com.wuzihao.calculator;import java.awt.*;public class Constant {public static final String NAME "简单计算器";publi…

C++实现“简单计算器”

最近在看九度上面的题目&#xff0c;其中一道题本以为比较简单&#xff0c;但花了不少时间&#xff0c;题目如下&#xff1a; 题目1019&#xff1a;简单计算器 我的思路是先读入一个字符串&#xff0c;再将字符串里面的数字和运算符号分别提取出来&#xff0c;最后根据运算的…

C++ 简单计算器

C实现简单的计算器 实现一个简单的计算器&#xff0c;可以实现对数字的加减乘除运算并输出显示结果。 完整代码 #include <iostream> using namespace std;int main() {char op;float num1, num2;cout << "输入运算符&#xff1a;、-、*、/ : ";cin &…

简单的计算器

实例说明 从键盘上输入数据并进行加、减、乘、除四则运算&#xff08;以“a运算符b” 的形式输入〕&#xff0c;判断输入的数据是否可以进行计算&#xff0c;若能计算&#xff0c;则输出计算结果。 实现代码 实现结果

C语言实现简单计算器

C语言实现简单计算器 一、背景二、代码1、数据结构2、弟弟行为的编程三、基本逻辑中缀转后缀&#xff08;1&#xff09;为什么要转&#xff08;2&#xff09;怎么转&#xff08;3&#xff09;注意事项 四、演示图片 一、背景 自己希望通过这个处女帖&#xff0c;来互相学习、经…

PHP实现简单计算器

目录 一、题目&#xff1a; 二、基本界面设计代码&#xff1a; 三、分析&#xff1a; 四、实现编程三个步骤 五、完整实现代码 一、题目&#xff1a; 题目描述&#xff1a;下列列表框中有、-、*、/四种运算符&#xff0c;选择不同的运算符进行&#xff0c;单击计算按钮进行不…

Linux:简单计算器

四则运算 vim一下1. 思路2. 代码分析及展示3. 运行结果 vim一下 用vi编写一个简单的四则运算程序&#xff0c;可以接受键盘输入的两个数和一个运算符号&#xff0c;并在控制台输出结果。 1. 思路 从键盘输入变量的值&#xff0c;获取这个值调用加减乘除这些函数&#xff0c;…

HTML实现简单计算器

简单计算器 <!DOCTYPE html> <html><head><meta charset"UTF-8"><title>简易计算器</title><style type"text/css">*{margin: auto;padding: 0px;text-align: center;font-family: "微软雅黑";}.con…

C语言实现简单计算器程序

简单计算器程序 编写一个简单计算器程序&#xff0c;输入格式为&#xff1a;data1 op data2。其中data1和data2是参加运算的两个数&#xff0c;op为运算符&#xff0c;它的取值只能是、-、*、/。。要求必须使用switch-case语句实现。 输出结果精确到小数点后2位&#xff1a;如…

AndroidStudio案例——简单计算器

效果展示 实验内容及步骤 设计一款带有可视化界面的简单计算器&#xff0c;供用户输入数据并查看结果。用户通过点击相应按钮&#xff08;加减乘除运算符、等号、数字&#xff09;输入正确的表达式&#xff0c;计算器进行相应的加减乘除运算&#xff0c;且可以进行小数和整数的…

Android简单计算器

文章目录 一、案列一、步骤1、activity_main.xml2、colors.xml3、strings.xml4、图片 一、案列 实现简易计算器 一、步骤 线性布局实现计算器&#xff0c;一个线性垂直布局里嵌套多个线性水平布局&#xff0c;插入文本框&#xff0c;编辑框&#xff0c;按钮多个控件&#x…

19:简单计算器

原题链接 总时间限制: 1000ms 内存限制: 65536kB 描述 一个最简单的计算器&#xff0c;支持, -, *, / 四种运算。仅需考虑输入输出为整数的情况&#xff0c;数据和运算结果不会超过int表示的范围。 输入 输入只有一行&#xff0c;共有三个参数&#xff0c;其中第1、2个参数…

python制作简单计算器

​ 做一个计算器&#xff0c;这是我们想要的效果。 1、准备工作 导入time、tqdm、math库 from tqdm import* from time import* from math import*2、开始 添加一个重复循环并添加变量s while True:#清屏print(\033c)while True:#如果用法输入的是str类型将打印输入错误&…

JavaScript实现简单计算器

一、两个输入框输入数值计算 步骤 1、编写html代码&#xff0c;实现计算器页面视图效果 2、编写js&#xff0c;实现点击输入数字和符号输出结果 1、编写html 1.1定义两个输入框和一个隐藏框。 1.2定义加减乘除四个按钮&#xff0c;并在里面设置一个单击事件onclick&#…

Java编写简单计算器

本文用Java的swing来实现一个简单计算器&#xff0c;主要内容为图形用户界面GUI的实现以及运算表达式核心算法的设计编写。 程序运行环境为Windows10 &#xff0c;编译环境为IntelliJ IDEA Community Edition 2022.2.3 一、具体功能&#xff1a; 1、&#xff1a;输入&#x…

项目一:简单计算器的实现

项目概述 1.1项目目标和主要内容 学习图形界 面的设计&#xff0c;利用 MFC 应用程序&#xff08;Java swing 或 QT 框架&#xff0c;或 C#&#xff09;创建基于对话框的应用程序&#xff0c;添加按钮、编辑框等控件&#xff1b; 能通过设计的按钮控件输入并实现简单算术运算&a…

【C语言】实现简易计算器

目录 1.实现逻辑 2.运行过程 3.优化前代码分析 主函数 计算函数 4.优化后代码分析 主函数 计算方法函数 输入操作数的函数 5.完整代码展示 1.实现逻辑 实现一个简易的计算器&#xff0c;可以计算两个整数的加减乘除 2.运行过程 3.优化前代码分析 主函数 int main()…

java工作流引擎,roadflow(一个强大的工作流引擎)

JAVA工作流引擎(J-RoadFlow) J-RoadFlow工作流平台是知名的.NET工作流引擎RoadFlow的JAVA移植版。该工作流平台由从事多年OA和工作流实施及开发的团队研发&#xff0c; 采用最简单的SM架构实现大中小企业中日常复杂业务流程审批。JAVA版不仅仅是.NET版本的移植&#xff0c;从架…

Easy-Flows - Java的简单愚蠢的工作流引擎

The simple, stupid workflow engine for Java 源代码名称&#xff1a;easy-flows源代码网址&#xff1a;http://www.github.com/j-easy/easy-flowseasy-flows 源代码文档easy-flows 源代码下载 Git URL git://www.github.com/j-easy/easy-flows.git Git Clone 代码到本地 g…

Flowable工作流引擎

Flowable工作流引擎 Flowable-基础篇(根据BV1Pb4y1p7Ku整理) 一、简介 Flowable是BPMN的一个基于java的软件实现&#xff0c;不过Flowable不仅仅包括BPMN&#xff0c;还有DMN决策表和CMMN Case管理引擎&#xff0c;并且有自己的用户管理、微服务API等一系列功能&#xff0c;…