基于额外参数排序向量
Sort vector based on extra parameters
我有一个指向对象指针向量的指针
vector<object*>* vec;
恰好保存了当前可能与另一个对象发生碰撞的对象的信息。这很好,但是我需要根据到根对象的距离对向量排序,我不知道最好的方法。
对象对另一个结构体
的另一个临时向量进行排序struct tempsort{
int distanceFromObject;
object* obj;
}
使用如下函数:
bool sorter(tempsort* first, tempsort* second){
return first->distanceFromObject < second->distanceFromObject;
}
实现: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);
对象现在可以解决碰撞
Tempsort的对象现在被擦除。
然而,我真的想对原始向量排序,而不是创建这个临时向量。这可能吗?如果有,怎么做?
尝试带参数的functor:
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));
相关文章:
- 将结构向量排序为子组
- C++数组与向量排序(在我的情况下,向量比数组慢~2.5倍(无优化))
- 如何在对向量排序后更改索引值?c++
- C++向量排序给出0作为输出
- 将许多向量排序在一起
- 根据一个向量对多个向量排序
- 编译错误向量排序和联合
- C++我自己的函数进行向量排序
- 将字符串的向量排序为日期"yyyymmdd"
- C++ 通过使用旧向量进行预排序来改进向量排序
- C 向量排序 .h .cpp中的单独文件
- 向量排序-c++
- 将向量排序到一个无序映射c++11中
- 向量的向量排序
- c++向量排序方法编译失败,返回预期表达式
- 如何对bitset向量排序
- 向量排序的基础上只有先
- 我如何以相同的方式对两个向量排序,而条件只使用其中一个向量
- 列表排序和结构体向量排序之间的性能差距.c++
- 如何基于第二个字符串对字符串向量的向量排序