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