c++ map sort
时间: 2023-09-06 10:11:02 浏览: 167
在 C++ 中,可以使用 std::map 来实现键值对的映射。如果需要按照键或者值来进行排序,可以使用 std::sort 函数或者 std::priority_queue。
以下是按照键进行排序的示例代码:
```c++
#include <iostream>
#include <map>
#include <algorithm>
int main() {
std::map<std::string, int> m = {{"Alice", 20}, {"Bob", 30}, {"Charlie", 10}};
// 按照键升序排序
std::map<std::string, int> sorted_by_key(m.begin(), m.end());
for (const auto& [key, value] : sorted_by_key) {
std::cout << key << ": " << value << std::endl;
}
// 按照键降序排序
std::map<std::string, int, std::greater<>> sorted_by_key_desc(m.begin(), m.end());
for (const auto& [key, value] : sorted_by_key_desc) {
std::cout << key << ": " << value << std::endl;
}
return 0;
}
```
以下是按照值进行排序的示例代码:
```c++
#include <iostream>
#include <map>
#include <algorithm>
int main() {
std::map<std::string, int> m = {{"Alice", 20}, {"Bob", 30}, {"Charlie", 10}};
// 按照值升序排序
std::vector<std::pair<std::string, int>> v(m.begin(), m.end());
std::sort(v.begin(), v.end(), [](auto& left, auto& right) {
return left.second < right.second;
});
for (const auto& [key, value] : v) {
std::cout << key << ": " << value << std::endl;
}
// 按照值降序排序
std::priority_queue<std::pair<std::string, int>> pq(v.begin(), v.end(), [](auto& left, auto& right) {
return left.second < right.second;
});
while (!pq.empty()) {
const auto& [key, value] = pq.top();
std::cout << key << ": " << value << std::endl;
pq.pop();
}
return 0;
}
```
阅读全文