我正在寻找用于IPV4的数据结构,它应该存储什么?前缀:(基础+掩码)->例如85.23.0.0/16
基础= 85.23.0.0 -> 32位无符号
掩码= 16也就是255.255.0.0 ->char 8位无符号
所以最小主机是85.23.0.0,最大主机是85.23.255.255(我知道在正常情况下应该是.0.1和.255.254,但我想简化它)
我需要的主要是在存储的前缀中搜索IP的速度。例如,我提供一个无符号整数(32位),并且我需要告诉它是否存在。
我正在使用C++编写,因此可以使用STL。
现在它存储在STL set(对base + mask进行排序),我一一搜索,所以这有点O(n)(除非它可能是BST树,因此遍历可能比O(n)更慢)
总之:我不需要有效存储IPV4的方式,我需要一种有效的搜索它的方法。数据结构不会存储端口或家族类型等,它将存储PREFIX(基础+掩码)。
我正在寻找数据结构+一些搜索算法。
基础= 85.23.0.0 -> 32位无符号
掩码= 16也就是255.255.0.0 ->char 8位无符号
所以最小主机是85.23.0.0,最大主机是85.23.255.255(我知道在正常情况下应该是.0.1和.255.254,但我想简化它)
我需要的主要是在存储的前缀中搜索IP的速度。例如,我提供一个无符号整数(32位),并且我需要告诉它是否存在。
我正在使用C++编写,因此可以使用STL。
现在它存储在STL set(对base + mask进行排序),我一一搜索,所以这有点O(n)(除非它可能是BST树,因此遍历可能比O(n)更慢)
总之:我不需要有效存储IPV4的方式,我需要一种有效的搜索它的方法。数据结构不会存储端口或家族类型等,它将存储PREFIX(基础+掩码)。
我正在寻找数据结构+一些搜索算法。