multimap 排序
时间: 2023-11-09 18:03:10 浏览: 136
multimap是C++ STL中的一个容器,它允许存储键值对,并且可以按照键进行排序。multimap中可以有重复的键,因此它被称为"多重映射"。
multimap中的元素默认是按照键的升序排序的。如果要按照其他排序规则进行排序,可以使用自定义比较函数。
下面是一个示例代码,演示如何使用自定义比较函数对multimap进行排序:
```cpp
#include <iostream>
#include <map>
#include <string>
using namespace std;
// 自定义比较函数,按照键的长度进行排序
bool compare(const string& a, const string& b) {
return a.length() < b.length();
}
int main() {
multimap<string, int> mymap;
mymap.insert(make_pair("apple", 1));
mymap.insert(make_pair("orange", 2));
mymap.insert(make_pair("banana", 3));
mymap.insert(make_pair("kiwi", 4));
mymap.insert(make_pair("pear", 5));
// 按照键的长度进行排序
multimap<string, int, decltype(compare)*> sorted_map(compare);
sorted_map.insert(mymap.begin(), mymap.end());
// 输出排序后的结果
for (auto it = sorted_map.begin(); it != sorted_map.end(); ++it) {
cout << it->first << ": " << it->second << endl;
}
return 0;
}
```
输出结果为:
```
kiwi: 4
pear: 5
apple: 1
banana: 3
orange: 2
```
可以看到,按照键的长度进行了排序。在定义multimap时,需要指定自定义比较函数的类型,以及将自定义比较函数作为构造函数的参数传入。然后使用这个有自定义比较函数的multimap进行插入操作即可。
阅读全文