【发布时间】:2012-03-10 15:37:47
【问题描述】:
我有存储 ARP 数据包信息的结构,我需要将 ARP 请求和回复数据包一起保存。我想为此使用 std::map,键和映射值是那个 ARP 结构,我将使用 find 运算符对请求的回复进行数学运算。
我的问题是如何说 map::find 仅比较结构中的一些成员。
我要描述的示例
struct arp_packet : public packet_info
{
u_short type; // 0x0001 request
// 0x0002 reply
struct ipv4_address ip_sender;
struct ipv4_address ip_target;
};
我会像这样将所有请求保存在地图中
std::map<arp_packet*, arp_packet*>
首先映射的值为NULL,但是当回复数据包到来时,我将使用find方法将其匹配到请求。
那么我应该如何实现映射将 arp_packet * 作为键,并在 find 它会采用另一个 arp_packet * 并使用 ip_sender 和 ip_target 匹配它?
【问题讨论】:
-
由于您存储的是原始指针,您只需提供一个谓词,为
arp_packet*类型提供适当的小于比较