有一些被称为字典的数据结构在各种计算机语言中可用。一种特殊形式的更快的数据结构,它根据键和值存储数据,就是字典。它将键值对保留在那里,以便可以通过键快速搜索某些组件,几乎实时。类似字典的数据结构包含在C++ STL语言标准中。这个数据结构被称为"map"。map生成任何类型的键和值对(类型必须在编译之前定义,因为我们使用的是C++)。在本节中,我们将看看如何使用C++根据其值对字典条目进行排序。
我们首先看一下地图数据结构是如何定义的。这些内部模板需要两种。所需的库和语法显示如下 -
定义地图数据结构的语法
#include
map mapVariable;
登录后复制
要在本例中使用地图数据结构,我们必须导入“map”库。这需要类型 1 和 2 的数据。 Type1 表示键参数的数据类型,而 type2 表示值类型。从地图类型类派生的对象称为mapVariable。现在让我们研究一下如何根据这些关键因素来组织地图。
使用Vector of Pairs
在这个想法中,我们只是创建了一个键值对的向量(动态数组,它是从C++ STL中获得的另一个元素)。然后通过创建比较函数进行排序。然后将内容再次以排序的格式存储到一个map中。
算法
-
以地图 M 作为输入
-
定义一个动态数组 A 来存储键值对
-
对于 M 中的每个键值对 p,执行
-
将 p 插入 A
-
-
结束
-
按照它们的键对A进行排序
-
创建空地图newMap
-
对于 A 中的每对 p -
-
将对 p 插入 newMap
-
-
结束
-
返回新地图
示例
#include
#include
#include
#include
using namespace std;
// Create a comparator function to perform key-value pair comparison
bool compare ( pair &a, pair &b ){
return a.second < b.second;
}
//Define sorting function to sort given dictionary or map
map sorting( map givenMap ){
vector pairVec;
map newMap;
for ( auto& it : givenMap ) {
pairVec.push_back( it );
}
sort( pairVec.begin(), pairVec.end(), compare);
for ( auto& it : pairVec ) {
cout