有一个QMap<QString,qreal> map,存储的数据为名字对应值,如: apple -> 12.2 , orange-> 23.3,banana->10.5。 现在需要按照map元素值的升序的顺序获取QMap中的所有元素。

也就是希望获得的结果是:banana,10.5 -> apple,12.2 -> orange,23.3 。

qSort可以实现对容器排序,但是无法对QMap使用qSort。

我们可以先将QMap中的元素放入到QVector,然后再对QVector进行排序,最终获得排序后的数据。

为了更好理解,程序中将map元素的数据类型定义为fruit。

排序的关键在于qSort第三个参数的编写,它是一个函数,用来判断元素的大小。 为了方便 这里使用了lambda表达式。

程序输出结果:

https://www.fearlazy.com/post/268.html需求:有一个QMap&lt;QString,qreal&gt; map,存储的数据为名字对应值,如: apple -&gt; 12.2 , orange-&gt; 23.3,banana-&gt;10.5。 现在需要按照map元素值的升序的顺序获取QMap中的所有元素。也就是希望获得的结果是:banana,10.5 -&gt; apple,12.2 -&gt; orange,23.3 。方法:qSort可.. QMap <int, QString> mapTest_; mapTest_.insert(1, "1111"); //直接插入 mapTest_[2] = "2222"; //另一种方式的插入 if(!mapT... operator<() QMap ’s key type must provide operator<(). QMap uses it to keep its items sorted, and assumes that two keys x and y are equal if neither x < y nor y < x is true. Qt帮助文档给的例子: #ifnd QMap 原型为class QMap <K,T>,其中K表示键,T表示值,K和T属于映射关系. QMap 会根据K来自动进行升序键 排序 QMap 中的K类型必须重载operator < QMap 常用函数如下: const Key QMap ::key ( const T & value ); //通过值来找键,若未找到则返回0,由于只对K键进行 排序 ,所以该函数不是快速查找 const T QMap :: value ( c
一文总结Qt关联式容器类— QMap QMap 是一个模板类,它提供了一个基于红黑树的字典。 QMap <Key, T>是Qt的一个通用容器类。它存储(键、值)对,并提供与键关联的值的快速查找方法。 ​ QMap 和QHash具有非常类似的功能。两者的差异是:QHash提供了比 QMap 更快的平均查找速度。在遍历QHash时,项目是任意 排序 的。使用 QMap ,项目按键 排序 的。 二、 QMap 的使用方法 (2-1)创建 QMap 。 ​ 例如: QMap <QString,int>map;
QMap <T1,T2> map1 T1为键值对中的键key,T2为键值对中的值。通过键值对中的键可以搜索到值。一般来说,键值对中的键是唯一的,不可重复,而值没有要求,可以重复。并且 QMap 具有自动 排序 功能,对输入的键进行 排序 。 1.2下面是一...
1、 QMap 插入后再遍历是按照key的顺序来 排序 的(汉字除外,汉字的 排序 顺序很奇怪,不是正常的字母顺序);2、QHash插入后再遍历是没有顺序的;3、如果想按照插入顺序记录,可使用这样的结构:QList> pairs;可以用这样的方式取数据: QString first Value = pairs.at(0).first; QString second Value = pairs.at(0).se
int value = myMap. value ("pear", ); // 如果pear不存在, value 的值为 以上就是使用 QMap 根据key查找 value 的方法。 ### 回答2: Qt是一个跨平台的C++框架,提供了丰富的库函数和工具,其中之一就是 QMap QMap 是Qt的一个关联容器,允许以key- value 对的形式存储和查找数据。在 QMap 中,key和 value 都可以是任何支持复制语义和小于比较的类型,例如基本数据类型、QString和自定义类。 QMap 支持多种方式查找 value ,最常见的是根据key查找。为了根据key查找 value ,我们可以使用 value ()函数、operator[]运算符或find()函数。使用这些函数进行查找时,会自动按key的大小 排序 ,因此查找速度相对较快。 value (): value ()函数根据key在 QMap 中查找 value ,如果存在该key则返回对应的 value ,否则返回一个默认值。 value ()函数有两种重载形式: - const T & value (const Key &key, const T &default Value = T()) const; - const T value (const Key &key, const T &default Value = T()) const; 第一个重载形式返回一个const引用,如果找到了对应的 value ,则返回该 value 的const引用;否则返回default Value 。第二个重载形式返回一个const副本,找到对应的 value 则返回该 value 的const副本;否则返回default Value 的const副本。 例如,以下代码演示了如何使用 value ()函数查找 value QMap <QString, int> map; map.insert("apple", 20); map.insert("banana", 30); map.insert("orange", 40); int appleCount = map. value ("apple", 0); // appleCount = 20 int pearCount = map. value ("pear", 0); // pearCount = 0 operator[]: operator[]运算符根据key在 QMap 中查找 value ,如果找到了对应的 value 则返回 value 的引用;否则插入一对key- value 并返回 value 的引用,其值为默认值。因此,使用operator[]运算符可以实现在 QMap 中添加key- value 对的操作。 例如,以下代码演示了如何使用operator[]运算符添加key- value 对或查找 value QMap <QString, int> map; map["apple"] = 20; map["banana"] = 30; int appleCount = map["apple"]; // appleCount = 20 map["orange"] = 40; find(): find()函数同样根据key在 QMap 中查找 value ,如果找到了对应的 value 则返回 value 的迭代器;否则返回 QMap ::end()迭代器。因此,可以使用find()函数进行迭代器遍历查找,也可以使用constFind()函数查找const迭代器。 例如,以下代码演示了如何使用constFind()函数查找 value : const QMap <QString, int> map{{"apple", 20}, {"banana", 30}, {"orange", 40}}; auto iter = map.constFind("apple"); if (iter != map.constEnd()) { int appleCount = iter. value (); // appleCount = 20 总之, QMap 提供了三种方式( value ()、operator[]和find())根据key查找 value ,可以根据具体情况选择最合适的函数进行操作。 ### 回答3: Qt QMap 是一种键值对映射的数据结构,它将一个键映射到一个值,我们可以使用键来查找对应的值。在Qt中, QMap 是常用的数据结构之一,通过它,我们可以快速地根据key查找到对应的 value 。 在 QMap 中,我们可以使用以下方法来查找 value : 1.使用 value ()方法:该方法会返回 QMap 中指定key所关联的 value 。如果key不存在于 QMap 中,则该方法会返回默认构造的 value 。 ```c++ QMap <QString, int> map; map.insert("a", 1); map.insert("b", 2); int value 1 = map. value ("a"); // value 1的值为1 int value 2 = map. value ("c"); // value 2的值为0,因为"c"不存在于 QMap 中,使用默认构造的 value int value 3 = map. value ("c", 3); // value 3的值为3,因为"c"不存在于 QMap 中,使用指定的默认值3 2.使用[]操作符:我们也可以使用[]操作符来根据key查找 value 。在 QMap 中,如果我们使用[]操作符访问一个不存在的key,则会自动创建一个新的key,并将其 value 初始化为默认值。 ```c++ QMap <QString, int> map; map.insert("a", 1); map.insert("b", 2); int value 1 = map["a"]; // value 1的值为1 int value 2 = map["c"]; // value 2的值为0,因为"c"不存在于 QMap 中,使用默认构造的 value map["c"] = 3; // 自动创建新的key "c",并将其 value 设为3 总的来说, QMap 提供了多种方式来根据key查找 value ,开发者可以根据实际情况选择适合自己的方式来进行操作。在使用 QMap 时,需要注意避免重复插入相同的key,否则会导致数据错误。