如何排序mac key的集合

时间:2017-05-18 13:42:03

标签: c++ stl

我需要存储设备列表。 每个设备都有唯一的mac地址。 我想用stl地图存储它,mac地址作为密钥。

我定义了struct:

struct MacBytes
{
char byte1;
char byte2;
char byte3;
char byte4;
char byte5;
char byte6;

bool operator <(const MacBytes& rhs) const
{
    //add implamention here
}
}

有关实施'运营商&lt;'的任何建议函数(stl映射必需),不使用多个if语句。 或者可以建议另一个代表。

2 个答案:

答案 0 :(得分:5)

使用char而不是包含大量单个std::array<char, 6>字段的结构。这是一种表示数据的简单方法,std::array已经有operator<,因此您不需要自己编写。

答案 1 :(得分:2)

使用std::tie(或考虑将MacBytes直接视为包含std::tuple):

operator <(const MacBytes& lhs, const MacBytes& rhs)
{
    return std::tie(lhs.byte1,lhs.byte2,lhs.byte3,lhs.byte4,lhs.byte5,lhs.byte6) <
           std::tie(rhs.byte1,rhs.byte2,rhs.byte3,rhs.byte4,rhs.byte5,rhs.byte6);
}