map<结构体,变量或结构体>自定义排序

#include <iostream>
#include <map>
#include <string>
using namespace std;

typedef struct {
    int id;
    string name;    
}Person;

bool operator < (const Person& p1, const Person& p2) {
    //return std::make_pair(p1.id, p1.name) < std::make_pair(p2.id, p2.name);   //先按frist比较大小,如果相等就比较second
    return p1.id > p2.id;   //根据id降序排列
}

int main()
{
    map<Person, string> vec;
    Person per1{ 2,"a" };
    Person per2{ 5,"b" };
    Person per3{ 1,"b" };
    Person per4{ 4,"d" };
    Person per5{ 3,"e" };
    vec.insert(make_pair(per1, "m"));
    vec.insert(make_pair(per2, "n"));
    vec.insert(make_pair(per3, "t"));
    vec.insert(make_pair(per4, "y"));
    vec.insert(make_pair(per5, "t"));

    for (auto it : vec) {
        cout << it.second << endl;
    }

    return 0;
}
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容