Я хотел бы определить оператор сравнения для класса подсети. Моя первая мысль заключается в том, что мы должны сравнивать количество хостов в подсети:
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 ?)
Вы можете заказать лексикографически пары (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));
}
Других решений пока нет …