我正在开发客户端应用程序,它是TCP客户端的模拟器,可能需要模拟1000个客户端。
每个客户端状态信息的大小可以是50字节。服务器需要状态信息,客户端模拟器需要存储一些位置。
服务器可以向任何客户端请求状态信息。因此,我想知道哪种数据结构有用。
服务器已经实现。如何管理这些客户端状态信息。由于我不能使用boost和其他第三方库,我只能依赖c ++。
关于如何管理状态信息:
在此方案中可以使用哪种STL /或其他数据结构。 这里没有第三方的自由党。
请建议我使用哪一个
由于
答案 0 :(得分:3)
这取决于你需要做什么。
如果它只是一个简单的查找,那么使用stl :: map(在STL中,这通常实现为树,因此你有O(lg N)查找)。
如果只有1000并且您可以控制标识符,为什么不使用数组呢?这显然会给你O(1)访问给定密钥的任何元素。如果预先知道了一组标识符,请使用Perfect Hashing,您也可以进行O(1)查找。
老实说,如果你只有1000个元素,那么如果它不是代码的时间关键部分,几乎所有东西都会非常快速地运行。
答案 1 :(得分:1)
通常,最快是O(1),这是恒定时间查找。如何实现这一点以及是否可能受到特定环境的限制。
到目前为止,你的解释还不清楚你有什么限制(服务器有),我们也不知道它有什么信息或它是如何运作的。
打开问题:
服务器想知道客户端状态的几个例子:
服务器具有指向客户端对象的指针,状态在客户端上。
int status = client->getStatus();
服务器具有客户端ID,状态存储在数组中。客户ID为0-999。
int status = clientStatus[clientId];
以上两者都是O(1)。
如果你更好地描述事情,你会得到更好的答案。
答案 2 :(得分:0)
我建议使用类型<key, value>
的用户定义对象的向量,使用哈希函数进行O(1)访问。