ult*_*tus 1 c++ sorting vector
我有一个指向对象指针向量的指针
vector<object*>* vec;
Run Code Online (Sandbox Code Playgroud)
这恰好保存了当前可能与另一个对象发生碰撞的对象的信息.这很棒 - 但是我需要按照与根对象的距离来对这个向量进行排序,我不知道最好的方法.
目前,该对象对另一个结构的另一个临时向量进行排序
struct tempsort{
int distanceFromObject;
object* obj;
}
Run Code Online (Sandbox Code Playgroud)
使用这样的函数:
bool sorter(tempsort* first, tempsort* second){
return first->distanceFromObject < second->distanceFromObject;
}
Run Code Online (Sandbox Code Playgroud)
执行:
vector<tempsort*> tosort;
for (int a = 0; a < vec->size(); a++){
tosort.push_back(new tempsort);
tempsort.distanceFromObject = distanceBetweenObjects(host,(*vec)[a]);
tempsort.obj=(*vec)[a];
}
sort(tempsort.begin(),tempsort.end(),sorter);
Run Code Online (Sandbox Code Playgroud)
该对象现在可以解决冲突.
Tempsort的对象现在已被删除.
但是我真的想要对原始矢量进行排序,而不是创建这个临时矢量.那可能吗?如果是这样,怎么样?
尝试带参数的仿函数:
struct sorter
{
object *host;
sorter(object *host) : host(host) { }
bool operator()(object* first, object* second){
return distanceBetweenObjects (host,first) < distanceBetweenObjects (host,second);
}
};
sort(tosort.begin(), tosort.end(),sorter(host));
Run Code Online (Sandbox Code Playgroud)