У меня есть структура, которая хранит информацию об ARP-пакете, и мне нужно сохранить ARP-запрос и пакет ответов вместе. Я хотел бы использовать std :: map для этого, ключевое и отображаемое значение - это ARP struct, и я бы использовал оператор find для математического ответа с запросом.C++ stl :: map find with structs
Мой вопрос: как я могу сказать map :: find, чтобы сравнивать только некоторые члены из struct.
Пример того, что я пытаюсь описать
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 *, и найдет ли он другой arp_packet * и сопоставит его с помощью ip_sender и ip_target?
Поскольку вы храните необработанные указатели, вам просто нужно предоставить предикат, который обеспечивает соответствующее меньшее сравнение для типа 'arp_packet *' – Chad