C++98遍历以'tag_ClientCBS'结构体为键的'std::map'

这篇文章将演示如何使用C++98遍历以自定义结构体'tag_ClientCBS'为键的'std::map'。

代码示例

以下是使用C++98实现遍历'g_clientCBS_map'的示例代码:cpp#include #include #include

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

struct CompareClientCBS{ bool operator()(const tag_ClientCBS& c1, const tag_ClientCBS& c2) const { if (c1.clientName != c2.clientName) return c1.clientName < c2.clientName; return c1.clientCbAddr < c2.clientCbAddr; }};

std::map<tag_ClientCBS, int, CompareClientCBS> g_clientCBS_map;

int main(){ // 添加一些测试数据 tag_ClientCBS client1 = {'client1', 'address1'}; tag_ClientCBS client2 = {'client2', 'address2'}; tag_ClientCBS client3 = {'client3', 'address3'}; g_clientCBS_map[client1] = 1; g_clientCBS_map[client2] = 2; g_clientCBS_map[client3] = 3; // 遍历g_clientCBS_map std::map<tag_ClientCBS, int, CompareClientCBS>::iterator it; for (it = g_clientCBS_map.begin(); it != g_clientCBS_map.end(); ++it) { std::cout << 'Client Name: ' << it->first.clientName << ', '; std::cout << 'Client Cb Addr: ' << it->first.clientCbAddr << ', '; std::cout << 'Value: ' << it->second << std::endl; } return 0;}

解释

  1. 'tag_ClientCBS'结构体: 定义了一个包含'clientName'和'clientCbAddr'两个字符串成员的结构体。2. 'CompareClientCBS'结构体: 实现了一个自定义的比较函数对象,用于比较两个'tag_ClientCBS'结构体。它首先比较'clientName',如果相同则比较'clientCbAddr'。3. 'g_clientCBS_map': 声明了一个以'tag_ClientCBS'为键,'int'为值的'std::map',并使用'CompareClientCBS'作为比较函数对象。4. 遍历'g_clientCBS_map': 使用迭代器遍历'g_clientCBS_map',并打印每个键值对的信息。

总结

通过定义自定义比较函数对象,我们可以使用C++98轻松遍历以自定义结构体为键的'std::map'。

C++98遍历std::map:以tag_ClientCBS结构体为键

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

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