1

我正在做一个玩具/实验,它需要类似 DNS 的服务来获取本地网络上特定节点的位置/地址信息。它还将存储其他信息,例如节点类型、套接字类型(enet-udp 或 tcp)以及其他一些特定的数据位。大多数(或可能全部)数字类型。每个条目将通过客户端 ID 与特定客户端相关联,每个客户端在节点内都有自己的线程。

我的问题是哪个 boost 包可以通过数字 ID 提供绝对最快的访问?虽然它可能永远不会实现,但这个想法是服务可能会增长到未知数量,为跨多个节点的线程内的数千个客户端管理 IPC。

换句话说,容器必须快速并且能够增长。如果增长的能力导致访问时间的急剧成本,那么设置大小的容器将是可取的,但可变大小是理想的。插入时间并不重要,维护容器内部结构中的数据顺序也不重要。

对于这种类型的容器/结构,提升是错误的地方吗?这是我第一次对 boost 甚至 c++ 中的结构非常挑剔,所以期待学习新的东西。

谢谢

4

1 回答 1

2

首先,请花点时间确保此查找实际上将成为您的应用程序的瓶颈之一(如果您正在执行 I/O,任何内部查找都可能无关紧要)。

如果您能够在数字 id 上设置上限(最大 val)并且满足于不以绝对最快的速度增长,那么您将是一个预先保留的向量。

否则,最有可能的候选者将是散列(unordered_map来自 C++11 或 boost)。哈希将具有恒定的时间查找,但请注意负载因子及其增长时间。

于 2013-07-13T00:27:16.180 回答