跨越多个向量的C++ -2D排序

跨越多个向量的C++ -2D排序,c++,sorting,C++,Sorting,我试图找出一种方法,以正确的顺序直观地绘制多个对象向量。我知道如何基于一个点对向量进行排序以使事情看起来正确,但如何跨多个向量进行排序?将所有不同类型的对象存储在一个向量中似乎不是一个好主意。创建一个包含指向其他向量中元素的指针的向量,然后使用解引用比较器对该向量进行排序 template<class comparitor> struct deref_comparitor { deref_comparitor(comparitor comp={}): comp(comp) {

我试图找出一种方法,以正确的顺序直观地绘制多个对象向量。我知道如何基于一个点对向量进行排序以使事情看起来正确,但如何跨多个向量进行排序?将所有不同类型的对象存储在一个向量中似乎不是一个好主意。

创建一个包含指向其他向量中元素的指针的向量,然后使用解引用比较器对该向量进行排序

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


查看此处的工作情况:

制作一个索引,将每个对象的z顺序链接到该对象的位置,然后对索引进行排序。我不确定您所说的索引是什么意思。就像书后面的索引一样。鸭子,24岁。牛,26岁。鹅,32岁。马,37岁。然后排序索引并按你想要绘制的顺序运行,例如在上面的情况下,你画马然后鹅然后牛然后鸭。我对C++有点新。大部分的事情都在我的脑海中浮现。@EvanWard:好吧,第一句话对你有意义吗?如果是这样的话,您应该能够理解我的代码最后两行的大部分内容。您不必了解deref_comparitor的工作原理。