我需要存储设备列表。 每个设备都有唯一的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语句。 或者可以建议另一个代表。
答案 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);
}