C++ 需要推荐c++;游戏服务器,在惠奇数据结构上供玩家使用,怪物对象,以获得性能优势

C++ 需要推荐c++;游戏服务器,在惠奇数据结构上供玩家使用,怪物对象,以获得性能优势,c++,data-structures,C++,Data Structures,目前,我使用类向量数据结构来表示对象,但我认为这对于性能问题不是很有效。我通常在vector中搜索特定的对象,所以当有很多对象时,搜索速度会变慢。看看类似于std::map的东西。如果您的对象具有ID,那么您可以使用该ID查找对象,而不必在每次需要查找某个对象时遍历向量 除了这个简单化的答案之外,还有更多的内容,但它应该让你开始。如果你的向量是有序的二进制搜索,并且执行得非常好。如果您的向量没有排序,并且经常插入对象(这意味着要对其重新排序或复制大量元素以保持顺序),或是一种非常好的搜索结构 然

目前,我使用类向量数据结构来表示对象,但我认为这对于性能问题不是很有效。我通常在vector中搜索特定的对象,所以当有很多对象时,搜索速度会变慢。

看看类似于
std::map
的东西。如果您的对象具有ID,那么您可以使用该ID查找对象,而不必在每次需要查找某个对象时遍历向量


除了这个简单化的答案之外,还有更多的内容,但它应该让你开始。

如果你的
向量是有序的二进制搜索,并且执行得非常好。如果您的向量没有排序,并且经常插入对象(这意味着要对其重新排序或复制大量元素以保持顺序),或是一种非常好的搜索结构

然而,所有这些都是通用的解决方案,可能会有更有效的解决方案,具体取决于您的特定用例(经常插入、经常删除、大小关键)


但您必须首先分析应用程序,以确保没有优化错误的部分。

对于初学者来说,这是一款什么样的游戏?FPS、MMO等。?这可能会决定您将对数据执行什么类型的操作,这无疑会驱动您的数据结构选择标准…@hatboyzero对我来说这听起来是一个相当奇怪的评估。您是否确定存在性能问题,并且它与搜索向量有关?(说它“有点慢”意味着性能问题,但不是问题所在;有很多东西可能会因为很多对象而变慢。)如何“执行搜索”?对于对象类型?他们是否有一个标识符可以用来(索引
向量
)为您提供恒定的时间性能?可能是因为您搜索太多,没有数据结构可以帮助您解决这一问题。如果没有更多的信息,就不可能说具体的东西。如果使用二进制搜索,请记住C++标准库中的<代码>二进制搜索> /代码>算法。众所周知,二进制搜索很难找到正确的答案,因此使用库版本几乎肯定会更好。@Davidthorney同时,
std::Binary_search
只检查值的存在性,不提供对它的引用。这就是为什么
lower_bound
通常更有用的原因。忘了这一点,但无论如何,在几乎所有情况下,使用库二进制搜索比编写自己的二进制搜索要好得多。