C ++ - 跨多个对象向量的二维Z排序

时间:2015-01-14 01:40:39

标签: c++ sorting

我正在试图找出一种方法,以正确的顺序在视觉上绘制多个对象矢量。我理解如何基于一个点对矢量进行排序以使事物看起来正确,但是我如何跨多个矢量执行此操作?将所有不同类型的对象存储在一个向量中似乎是一个坏主意。

1 个答案:

答案 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>>());
嗯,我想知道这样的东西是否已经出现在标准库中了?

在此处查看:http://coliru.stacked-crooked.com/a/8ed0015a7535b236