有一些称为字典的数据结构,可用于各种计算机语言。基于键和值存储数据的一种特殊形式的更快数据结构是字典。它将键值对保留在那里,以便可以通过键几乎实时地快速搜索某些组件。类似字典的数据结构包含在C++ STL语言标准中。这种数据结构被称为“map”。映射生成一对任何类型的键和值(类型必须在编译之前定义,因为我们使用的是C++)。在本节中,我们将介绍如何使用 C++ 根据字典条目的值对字典条目进行排序。
我们先来看看地图数据结构是如何定义的。这些内部模板需要两种类型。所需的库和语法如下所示 -
定义地图数据结构的语法
在这种情况下要使用地图数据结构,我们必须导入“map”库。这需要数据类型 1 和 2。Type1 表示键参数的数据类型,而 type2 表示值类型。从映射类型类派生的对象称为 mapVariable。现在让我们研究一下如何根据这些关键因素组织地图。
使用对向量
在这个想法中,我们只是创建一个键值对的向量(动态数组,它是STL的另一个元素C++。然后通过创建比较函数来执行排序。然后再次将内容以排序格式存储到地图中。
算法
- 以地图 M 作为输入
- 定义动态数组 A 以存储键值对
- 对于 M 中的每个键值对 p,执行
- 将 p 插入 A
- 结束于
- 根据键对 A 进行排序
- 创建空地图新地图
- 对于 A 中的每对 p −
- 将 p 对插入新地图
- 结束于
- 返回新地图
例
输出
我们已经执行了排序,如果我们将最终结果存储在map中,则在排序前后不会看到任何差异,这是因为map数据结构大部分时间都以其键的排序形式保存数据。在这里,我们使用向量根据值对它们进行排序。如果我们直接从矢量打印它们,则可以找到顺序。
使用一组对
映射数据结构中的键值对可以使用集合(另一种类型的数据结构)进行排序。数据按排序顺序保存在设置的数据结构中。因此,将元素添加到集合后,不再需要排序。为了更好地理解,让我们看一下算法。
算法
- 以地图 M 作为输入
- 定义一个集合 S 来存储键值对
- 对于 M 中的每个键值对 p,执行
- 将 p 插入 S
- 结束于
- 创建空地图新地图
- 对于 S 中的每对 p −
- 将 p 对插入新地图
- 结束于
- 返回新地图
例
输出
结论
在这篇文章中,我们看到了两种不同的方法来对字典数据结构(在C++中称为map)进行排序并按值对其进行排序。由于映射是哈希映射,因此其密钥的数据使用哈希算法进行存储。尽管键是不同的,但单独键的值可能相同。使用集合和向量排序,其中向量和集合携带配对,我们对它们进行了排序。每对有两种不同的种类。值类型是第二种类型,而键类型是第一种类型。