21xrx.com
2024-09-20 05:30:56 Friday
登录
文章检索 我的文章 写文章
C++中使用Map按Key进行排序
2023-06-30 00:50:09 深夜i     --     --
C++ Map 按Key 排序 STL

C++中的Map是一种常用的数据结构,它提供了一种将键映射到值的方法。通常情况下,我们需要按照Key的排序来访问Map中的数据。C++中的Map本身并没有提供按Key排序的方法,不过我们可以使用一些技巧来实现Map按Key排序。

首先,我们可以使用STL中的std::pair来封装Key和Value,然后利用STL中的sort函数来按Key排序。具体实现方法如下:


#include <iostream>

#include <map>

#include <algorithm>

using namespace std;

int main()

{

  map<int, int> myMap;

  myMap[1] = 3;

  myMap[2] = 2;

  myMap[3] = 1;

  vector<pair<int, int> > vec(myMap.begin(), myMap.end());

  sort(vec.begin(), vec.end());

  for (int i = 0; i < vec.size(); i++)

    cout << vec[i].first << ": " << vec[i].second<< endl;

  return 0;

}

以上代码中,我们首先定义了一个Map myMap,并向其中添加了三个键值对。接着,我们利用STL中的vector来存储键值对。这里需要注意的是,vector的元素类型为std::pair ,即键值对的类型。然后,我们调用sort函数对vector进行排序,sort函数默认按照pair的first进行排序。最后,我们遍历排序后的vector,按顺序输出键值对。

也可以使用仿函数来进行排序:


#include <iostream>

#include <map>

#include <algorithm>

using namespace std;

struct cmp {

  bool operator()(const int &a, const int &b) const

    return a < b;

  

};

int main()

{

  map<int, int, cmp> myMap;

  myMap[1] = 3;

  myMap[2] = 2;

  myMap[3] = 1;

  for (auto it=myMap.begin(); it!=myMap.end(); ++it)

    cout << it->first << ": " << it->second << endl;

  return 0;

}

以上代码中,我们定义了一个结构体cmp,仿函数实现对Key的排序。然后,我们在定义Map时,将仿函数作为第三个参数传入Map中。接着,我们遍历Map输出键值对。

综上,我们可以使用STL中的sort函数或仿函数的方法实现C++中的Map按Key排序。这些方法虽然不是直接在Map中排序,但它们提供了一种快捷的排序方式,可以满足我们对Map的排序需求。

  
  

评论区

{{item['qq_nickname']}}
()
回复
回复