C++ 如何快速搜索结构或类向量中具有特定值的对象?c++;

C++ 如何快速搜索结构或类向量中具有特定值的对象?c++;,c++,vector,struct,collision,C++,Vector,Struct,Collision,如果向量中有数千个结构或类对象,如何快速找到所需的对象? 例如: 做一个游戏,我需要最快的碰撞检测方法。每个分片都是一个结构,矢量贴图中有许多分片,其值为:x和y。 所以我基本上是这样做的: For(i=0;i<end of vector list;i++) { //searching if x= 100 and y =200 } 对于(i=0;i您应该您的向量,然后使用标准库算法,如、或 以上内容将为您提供比遍历整个向量或使用标准库算法提供的o(n)更好的兼容性向量只是一个无序的对象

如果向量中有数千个结构或类对象,如何快速找到所需的对象?
例如:
做一个游戏,我需要最快的碰撞检测方法。每个分片都是一个结构,矢量贴图中有许多分片,其值为:x和y。 所以我基本上是这样做的:

For(i=0;i<end of vector list;i++)
{
 //searching if x= 100 and y =200
}
对于(i=0;i您应该您的向量,然后使用标准库算法,如


以上内容将为您提供比遍历整个向量或使用标准库算法提供的
o(n)
更好的兼容性

向量只是一个无序的对象集合。除非您开始以特定方式对向量进行排序,否则实际上无法执行您要求的操作(例如,如果已排序,您可以跳到向量的中间,并可能将搜索时间一分为二)


你最好选择一个不同的数据结构(代替向量或与之结合)

我认为你必须更深入地研究一组结构中的一个值,如果你计划在一个更高的数字中搜索,甚至更深入。 结构是如何生成的,它们是如何收集的,以及您是如何跟踪它们的,有一个公共密钥,您可以在创建它们时使用它来排序

在将它们添加到整个结构中时,您应该将重点放在对它们进行排序上,这样可以避免每次必须执行搜索时都会出现大量计算突发。选择一个好的算法(例如AVL排序),这样您就可以使用O(log(n)))添加/删除/搜索。

例如:

for_each(v.begin(),v.end(), [](int e) 
{
    if (e%2==1)//vector elements that are not divided by 2 without remainder
    cout<<e<<endl;
});
每个(v.begin(),v.end(),[](int e)的

{
if(e%2==1)//不被2除而没有余数的向量元素

coutSmart指针在这个词的常用用法中并不是特别聪明,也就是说,它们不会将您指向所需的元素。相反,它们有点愚蠢和专注,在生命中只有一个目的,即保证托管对象的生命周期得到控制。