C++ 使用自定义比较函数实现 std::map 以结构体为键,并以结构体中两个字段作为唯一标识

本文将介绍如何使用自定义比较函数 clientCompareKey, 使 std::map 以结构体 tag_ClientCBS 为键, 并以结构体中的 clientCbAddrclientName 两个字段作为唯一标识进行排序和查找。

1. 定义结构体 tag_ClientCBS:

typedef struct 
{
    HelloWorldPtr clientPtr;
    std::string   clientName;
    std::string   clientCbAddr;
}tag_ClientCBS;

2. 实现自定义比较函数 clientCompareKey:

struct clientCompareKey {
    bool operator()(const tag_ClientCBS& client1, const tag_ClientCBS& client2) const {
        if (client1.clientCbAddr != client2.clientCbAddr) {
            return client1.clientCbAddr < client2.clientCbAddr;
        }
        return client1.clientName < client2.clientName;
    }
};

这个函数首先比较 clientCbAddr 字段,如果相同再比较 clientName 字段,从而实现以这两个字段作为唯一标识。

3. 创建以 tag_ClientCBS 为键的 std::map:

static std::map<tag_ClientCBS, int, clientCompareKey> g_clientCBS_map;

这里使用自定义的比较函数 clientCompareKey 作为 std::map 的第三个模板参数,来创建一个以 tag_ClientCBS 作为键的有序映射。

现在,g_clientCBS_map 就是一个以 tag_ClientCBS 作为键的有序映射,它使用 clientCompareKey 来比较键的唯一性, 可以根据 clientCbAddrclientName 两个字段进行高效的排序和查找。

C++ 使用自定义比较函数实现 std::map 以结构体为键,并以结构体中两个字段作为唯一标识

原文地址: https://www.cveoy.top/t/topic/fdHd 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录