typedef struct stdstring clientName; stdstring clientCbAddr;tag_ClientCBS; linux c++ map的key使用这个作为结构体实现插入删除查找 使用c++98实现给出实现
以下是使用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 的排序方式,以确保结构体作为键时能够正确比较和排序。
原文地址: https://www.cveoy.top/t/topic/jdh9 著作权归作者所有。请勿转载和采集!