c++根据值对map 排序
时间: 2023-08-04 18:03:44 浏览: 89
要根据`std::map`的值对其进行排序,可以使用一个辅助的`std::vector`来存储键值对,并使用自定义的比较函数来对这个向量进行排序。
以下是一个示例代码:
```c++
#include <iostream>
#include <map>
#include <vector>
#include <algorithm>
// 自定义比较函数
struct Compare {
bool operator()(const std::pair<std::string, int>& a, const std::pair<std::string, int>& b) const {
// 根据值进行排序
return a.second < b.second;
}
};
int main() {
// 创建一个map
std::map<std::string, int> myMap;
// 向map添加元素
myMap["apple"] = 3;
myMap["banana"] = 1;
myMap["carrot"] = 2;
// 创建一个辅助的vector,将map中的元素存入其中
std::vector<std::pair<std::string, int>> vec(myMap.begin(), myMap.end());
// 对vector进行排序
std::sort(vec.begin(), vec.end(), Compare());
// 遍历并打印排序后的vector
for (const auto& pair : vec) {
std::cout << pair.first << ": " << pair.second << std::endl;
}
return 0;
}
```
在此示例中,我们首先创建了一个`std::map`并添加了一些键值对。然后,使用`std::vector`将`map`中的元素复制到其中。接下来,通过使用自定义的比较函数`Compare`对向量进行排序。最后,我们遍历并打印排序后的向量。
运行此示例代码,将得到以下输出:
```
banana: 1
carrot: 2
apple: 3
```
你可以根据自己的需求修改比较函数来实现不同的排序方式。
阅读全文