c++ map自定义排序
时间: 2023-09-05 07:13:07 浏览: 165
在C++中,std::map是一个有序的关联容器,它的元素按照键的大小进行排序。如果想要自定义排序规则,可以使用自定义比较函数或者lambda表达式来实现。
引用中的代码示例展示了如何利用自定义比较函数来对std::map进行排序。首先,将std::map的键值对拷贝到一个std::vector中,然后使用std::sort函数对std::vector进行排序。在自定义比较函数cmp_val中,我们定义了按照键对应的值进行排序的规则。最后,通过遍历排序后的std::vector来输出排序后的结果。
引用中的代码示例展示了使用lambda表达式来实现相同的功能。在std::sort函数的第三个参数中,我们使用了一个lambda表达式来定义排序规则,即按照键对应的值进行排序。
以下是一个类似的示例代码,用于自定义排序std::map:
```cpp
#include <iostream>
#include <string>
#include <map>
#include <algorithm>
#include <vector>
using namespace std;
typedef pair<string, int> PAIR;
struct cmp {
bool operator()(const PAIR& left, const PAIR& right) const {
return left.second < right.second;
}
};
int main() {
map<string, int> ma;
ma["Alice"] = 86;
ma["Bob"] = 78;
ma["Zip"] = 92;
ma["Stdevn"] = 88;
vector<PAIR> vec(ma.begin(), ma.end());
sort(vec.begin(), vec.end(), cmp());
for (vector<PAIR>::iterator ite = vec.begin(); ite != vec.end(); ++ite) {
cout << ite->first << " " << ite->second << endl;
}
return 0;
}
```
在这个示例中,我们定义了一个结构体cmp作为自定义比较函数,并在main函数中创建一个map对象ma,然后将键值对拷贝到一个vector中,并使用自定义比较函数cmp对vector进行排序。最后,通过遍历排序后的vector来输出结果。
请注意,这只是一个示例代码,你可以根据实际需求进行修改和调整。<span class="em">1</span><span class="em">2</span><span class="em">3</span>
#### 引用[.reference_title]
- *1* [C++的map的自定义排序](https://blog.csdn.net/sinat_31608641/article/details/128122868)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v92^chatsearchT0_1"}}] [.reference_item style="max-width: 50%"]
- *2* *3* [C++ map自定义排序](https://blog.csdn.net/frighting_ing/article/details/122027936)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v92^chatsearchT0_1"}}] [.reference_item style="max-width: 50%"]
[ .reference_list ]
阅读全文