use*_*919 5 c++ algorithm stl data-structures
我正在寻找IPV4的数据结构.它应该存储什么?前缀:(base + mask) - >例如85.23.0.0/16
base = 85.23.0.0 - > 32位无符号
mask = 16 AKA 255.255.0.0 - > char 8 bit unsigned
所以min主机是85.23.0.0,最大主机是85.23.255.255(我知道在正常情况下应该是.0.1和.255.254,但我想简化它)
我需要的主要是在存储的前缀中搜索IP的速度.例如,我给unsigned int(32位),我需要告诉它是否存在.
我用C++编写,所以我可以使用STL
现在它存储在STL集(对基数+掩码)中,我一个接一个地搜索,所以它是O(n)的排序(不包括它可能是BST树,所以走过它可能比O慢( N))
总结一下:我不需要有效的方式来存储IPV4,我需要一种有效的方法来在某些数据结构中搜索它.并且数据结构不会存储端口或族类型等.它将存储PREFIX(base + mask).
而我正在寻找数据结构+一些搜索算法.
小智 2
为什么不使用 std:unordered_map ?应该在 O(1) 和 O(n) 之间,或者如果您想要 O(log n) 的固定性能(如果您真的只对搜索阶段的性能感兴趣),则可以使用 std:map。除非您的数据集很大,否则您可能会发现没有显着差异。
| 归档时间: |
|
| 查看次数: |
718 次 |
| 最近记录: |