c++ map lambda排序
时间: 2024-10-11 22:11:40 浏览: 25
在C++中,`std::map`是一种关联容器,它存储键值对,并自动按照键的顺序进行排序。如果你想根据值对map进行排序,可以结合lambda表达式和`std::sort`函数一起使用。这里是一个简单的例子:
```cpp
#include <map>
#include <algorithm>
int main() {
std::map<std::string, int> m = {{"apple", 5}, {"banana", 3}, {"cherry", 7}};
// 使用lambda表达式作为比较函数
auto sort_by_value = [](const auto& pair) { return pair.second; };
// 对map进行排序,值从小到大
std::vector<std::pair<std::string, int>> sorted_map(m.begin(), m.end());
std::sort(sorted_map.begin(), sorted_map.end(), sort_by_value);
for (const auto& pair : sorted_map) {
std::cout << pair.first << ": " << pair.second << "\n";
}
return 0;
}
```
在这个示例中,我们创建了一个lambda表达式`sort_by_value`,它接受一个map中的元素(`pair`),并返回其值部分。然后我们将map的内容复制到vector中,以便于排序操作。最后,我们使用`std::sort`函数将vector中的元素按值从小到大排列。
阅读全文