以下是使用C++98实现插入、删除和查找操作的示例代码:

#include <iostream>
#include <map>
#include <string>

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

struct CompareClientCBS
{
    bool operator()(const tag_ClientCBS& cbs1, const tag_ClientCBS& cbs2) const
    {
        if (cbs1.clientName < cbs2.clientName)
            return true;
        if (cbs1.clientName > cbs2.clientName)
            return false;
        return cbs1.clientCbAddr < cbs2.clientCbAddr;
    }
};

int main()
{
    std::map<tag_ClientCBS, int, CompareClientCBS> clientMap;

    // 插入操作
    tag_ClientCBS client1;
    client1.clientName = "Client1";
    client1.clientCbAddr = "Addr1";
    clientMap[client1] = 1;

    tag_ClientCBS client2;
    client2.clientName = "Client2";
    client2.clientCbAddr = "Addr2";
    clientMap[client2] = 2;

    tag_ClientCBS client3;
    client3.clientName = "Client3";
    client3.clientCbAddr = "Addr3";
    clientMap[client3] = 3;

    // 删除操作
    tag_ClientCBS clientToRemove;
    clientToRemove.clientName = "Client2";
    clientToRemove.clientCbAddr = "Addr2";
    clientMap.erase(clientToRemove);

    // 查找操作
    tag_ClientCBS clientToFind;
    clientToFind.clientName = "Client1";
    clientToFind.clientCbAddr = "Addr1";
    std::map<tag_ClientCBS, int, CompareClientCBS>::iterator it = clientMap.find(clientToFind);
    if (it != clientMap.end())
    {
        std::cout << "Found: " << it->second << std::endl;
    }
    else
    {
        std::cout << "Not found" << std::endl;
    }

    return 0;
}

注意,这个示例使用了自定义的比较函数 CompareClientCBS 来定义 std::map 的排序方式,以确保结构体作为键时能够正确比较和排序。

typedef struct stdstring clientName; stdstring clientCbAddr;tag_ClientCBS; linux c++ map的key使用这个作为结构体实现插入删除查找 使用c++98实现给出实现

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

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