我想为子网类定义一些比较运算符。我的第一个想法是我们应该比较子网中的主机数量:
192.168.0.0/24 < 192.168.0.0/23
||
\/
254 < 510 (evaluates true)
我不确定在两个大小相同但子网不同的情况下应该做些什么:
10.0.0.0/24 < 192.168.0.0/24
||
\/
254 < 254 (evaluates ?)
答案 0 :(得分:0)
您可以按字典顺序排列对 (size, address)
。这会将最小的子网放在第一位,并在一个大小内按网络地址值排序:
struct netclass { uint32_t size; uint32_t addr; };
bool operator<(netclass const & nc1, netclass const & nc2)
{
return (nc1.size < nc2.size) ||
(!(nc2.size < nc1.size) && (nc1.addr < nc2.addr));
}