map c++ 自定义排序 key
时间: 2024-08-21 11:03:26 浏览: 64
基于C++ map中key使用指针问题的详解
在C++中,`std::map` 默认使用键值的升序排列。如果你想自定义排序,可以通过提供一个比较函数或者重载 `operator<` 来实现。自定义排序通常需要使用 `std::map` 的模板参数,即比较函数对象。
例如,如果你想让键的排序是降序的,可以这样做:
```cpp
#include <iostream>
#include <map>
// 定义一个比较函数对象,用于比较键值
struct DescendCompare {
bool operator()(const int& lhs, const int& rhs) const {
// 使用大于号实现降序
return lhs > rhs;
}
};
int main() {
// 使用自定义的比较函数对象创建map
std::map<int, std::string, DescendCompare> myMap;
// 插入一些键值对
myMap[5] = "五个";
myMap[1] = "一个";
myMap[3] = "三个";
// 遍历map
for (const auto& pair : myMap) {
std::cout << pair.first << " 对应的值是 " << pair.second << std::endl;
}
return 0;
}
```
这段代码定义了一个名为 `DescendCompare` 的结构体,重载了 `operator()` 以实现自定义的比较逻辑,然后在 `std::map` 的模板参数中使用了这个比较函数对象,从而创建了一个键值按照降序排列的映射。
阅读全文