std::vector里面存储3个std::map数据,3个map数据的内容分别是std::map("1",70),std::map("2",69),std::map("3",71),我需要对这个vector根据map里的int数据从小到大排序
时间: 2023-11-28 07:19:19 浏览: 55
可以使用 `std::sort` 函数对vector中的每个map进行排序,排序规则可以自定义一个比较函数,如下所示:
```c++
bool cmp(const std::map<std::string, int>& a, const std::map<std::string, int>& b) {
return a.begin()->second < b.begin()->second;
}
int main() {
std::vector<std::map<std::string, int>> vec = {
{{"1", 70}},
{{"2", 69}},
{{"3", 71}}
};
std::sort(vec.begin(), vec.end(), cmp);
for (const auto& map : vec) {
for (const auto& pair : map) {
std::cout << pair.first << ": " << pair.second << std::endl;
}
}
return 0;
}
```
输出结果为:
```
2: 69
1: 70
3: 71
```
其中,`cmp` 函数的作用是比较两个map的第一个键值对的值的大小,即 `a.begin()->second < b.begin()->second`,这里假设所有map都至少有一个键值对。