子网类的比较运算符

时间:2012-09-06 21:37:04

标签: c++ network-programming operator-overloading comparison-operators

我想为子网类定义一些比较运算符。我的第一个想法是我们应该比较子网中的主机数量:

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 ?)

1 个答案:

答案 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));
}