我正在试图找出一种方法,以正确的顺序在视觉上绘制多个对象矢量。我理解如何基于一个点对矢量进行排序以使事物看起来正确,但是我如何跨多个矢量执行此操作?将所有不同类型的对象存储在一个向量中似乎是一个坏主意。
答案 0 :(得分:0)
创建一个包含指向其他向量中元素的指针的向量,然后对那个向量进行排序(当然使用解除引用的比较符)
template<class comparitor>
struct deref_comparitor {
deref_comparitor(comparitor comp={}): comp(comp) {}
template<class pointer>
bool operator()(pointer left, pointer right) {return comp(*left, *right);}
private:
comparitor comp;
};
std::vector<T*> thingies = {....};
std::sort(thingies.begin(), thingies.end(), deref_comparitor<std::less<T>>());
嗯,我想知道这样的东西是否已经出现在标准库中了?