typedef struct stdstring clientName; stdstring clientCbAddr;tag_ClientCBS; linux c++ map的key使用这个作为结构体值为int实现插入删除查找遍历 使用c++98实现给出实现
以下是使用C++98实现的插入、删除、查找和遍历的示例代码:
#include <iostream>
#include <map>
#include <string>
typedef struct
{
std::string clientName;
std::string clientCbAddr;
} tag_ClientCBS;
struct CompareStruct
{
bool operator()(const tag_ClientCBS& lhs, const tag_ClientCBS& rhs) const
{
if(lhs.clientName == rhs.clientName && lhs.clientCbAddr == rhs.clientCbAddr)
return false;
else if(lhs.clientName < rhs.clientName)
return true;
else if(lhs.clientName == rhs.clientName && lhs.clientCbAddr < rhs.clientCbAddr)
return true;
else
return false;
}
};
int main()
{
std::map<tag_ClientCBS, int, CompareStruct> clientMap;
// 插入元素
tag_ClientCBS client1;
client1.clientName = "Alice";
client1.clientCbAddr = "Address1";
clientMap[client1] = 1;
tag_ClientCBS client2;
client2.clientName = "Bob";
client2.clientCbAddr = "Address2";
clientMap[client2] = 2;
// 删除元素
clientMap.erase(client2);
// 查找元素
tag_ClientCBS client3;
client3.clientName = "Alice";
client3.clientCbAddr = "Address1";
std::map<tag_ClientCBS, int, CompareStruct>::iterator it = clientMap.find(client3);
if(it != clientMap.end())
{
std::cout << "Found: " << it->second << std::endl;
}
else
{
std::cout << "Not found" << std::endl;
}
// 遍历元素
for(it = clientMap.begin(); it != clientMap.end(); ++it)
{
std::cout << it->first.clientName << " " << it->first.clientCbAddr << " " << it->second << std::endl;
}
return 0;
}
在这个示例中,我们定义了一个tag_ClientCBS结构体作为std::map的键,值为int。为了在std::map中使用自定义结构体作为键,我们还定义了一个CompareStruct结构体,用于比较两个tag_ClientCBS对象的大小关系。
在主函数中,我们创建了一个名为clientMap的std::map对象,并使用client1和client2作为键插入了两个元素。然后,我们使用client2作为键从clientMap中删除了一个元素。
接下来,我们创建了一个名为client3的tag_ClientCBS对象,并使用它在clientMap中查找元素。如果找到了相应的元素,则输出其值;否则,输出"Not found"。
最后,我们使用迭代器遍历了clientMap中的所有元素,并将键和值打印到标准输出。
原文地址: https://www.cveoy.top/t/topic/jdjb 著作权归作者所有。请勿转载和采集!