Контейнеры STL всегда содержат копии объекта, и это также относится к ключам карты.
Самый простой способ поддержать это - использовать собственный компаратор для карты.
struct UUIDComparator
{
bool operator()(const uuid_t &a, const uuid_t &b)
{
//compare and return a < b
}
};
std::map<uuid_t, int, UUIDComparator> map;
Другим немного спорным решением было бы преобразовать uuid_t
в std::pair<uint64_t, uint64_t>
, поскольку оба типа имеют ширину 128 бит и, AFAICT, совместимы с компоновкой. И std::pair
могут непосредственно использоваться в качестве ключей карты.
std::map<std::pair<uint64_t, uint64_t>, int, UUIDComparator> map;