std::vector 存在3组std::map数据,分别是std::map<"1",2>,std::map<"2",3>,std::map<"3",1>想对它根据int数据从小到大排序,
时间: 2024-01-20 21:02:46 浏览: 80
可以通过自定义一个比较函数,然后使用std::sort()函数进行排序。下面是代码示例:
```cpp
#include <iostream>
#include <vector>
#include <map>
#include <algorithm>
bool cmp(const std::pair<std::string, int>& a, const std::pair<std::string, int>& b) {
return a.second < b.second;
}
int main() {
std::vector<std::map<std::string, int>> vec = {
{{"1", 2}},
{{"2", 3}},
{{"3", 1}}
};
// 对每组std::map按照int数据从小到大排序
for (auto& m : vec) {
std::vector<std::pair<std::string, int>> v(m.begin(), m.end());
std::sort(v.begin(), v.end(), cmp);
m.clear();
for (auto& p : v) {
m.insert(p);
}
}
// 输出排序后的结果
for (auto& m : vec) {
for (auto& p : m) {
std::cout << p.first << " " << p.second << std::endl;
}
std::cout << std::endl;
}
return 0;
}
```
输出结果为:
```
1 2
2 3
3 1
```
阅读全文