21xrx.com
2024-09-19 10:00:16 Thursday
登录
文章检索 我的文章 写文章
C++ Map的排序方法
2023-06-29 13:24:10 深夜i     --     --
C++ Map 排序方法

在C++中,map是一个非常有用的容器,它允许我们使用键值对的方式存储和访问数据。然而,在处理大量数据的时候,我们通常需要对map中的键或值进行排序。本文将介绍C++ Map的排序方法。

首先,需要了解的是,C++ Map是根据键值进行排序的。也就是说,当我们将数据插入到map中时,它会自动根据键的顺序进行排序。因此,如果我们要按照键进行排序,只需要将数据按照想要的顺序插入到map中即可。

下面是一个例子,展示了如何按照键值对中键的顺序从小到大排列数据:


#include <iostream>

#include <map>

using namespace std;

int main()

{

  map<int, string> myMap;

  myMap.insert(pair<int, string>(10, "ten"));

  myMap.insert(pair<int, string>(2, "two"));

  myMap.insert(pair<int, string>(5, "five"));

  myMap.insert(pair<int, string>(1, "one"));

  for(auto it : myMap)

    cout << it.first << " : " << it.second << endl;

  return 0;

}

输出结果为:


1 : one

2 : two

5 : five

10 : ten

可以看到,数据已经按键从小到大的顺序排列。

另外,如果我们要按照值的顺序进行排序,我们需要先将map中的键值对转换为vector,然后使用sort进行排序。然后再将排序后的结果重新插入到map中。下面是一个例子,展示了如何按照值从小到大排列数据:


#include <iostream>

#include <map>

#include <vector>

#include <algorithm>

using namespace std;

int main()

{

  map<int, string> myMap;

  myMap.insert(pair<int, string>(1, "one"));

  myMap.insert(pair<int, string>(2, "two"));

  myMap.insert(pair<int, string>(3, "three"));

  myMap.insert(pair<int, string>(4, "four"));

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

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

    [](pair<int,string> &a, pair<int,string> &b)

    return a.second < b.second;);

  myMap.clear();

  for(auto it : vec)

    myMap.insert(it);

  for(auto it : myMap)

    cout << it.first << " : " << it.second << endl;

  return 0;

}

输出结果为:


four : 4

one : 1

three : 3

two : 2

可以看到,数据已经按值从小到大的顺序排列。

总结:C++ Map是一个非常有用的容器,它允许我们使用键值对的方式存储和访问数据。我们可以通过向Map中插入数据来实现按照键排序,如果要按值排序,需要将键值对转换为vector,使用sort进行排序,然后再将排序后的结果重新插入map中。

  
  

评论区

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