2015-01-14 48 views
0

我试图找出一种方法来以正确的顺序在视觉上绘制多个向量的对象。我知道如何基于点来对矢量进行排序以使事物看起来正确,但我怎样才能跨越多个矢量来做到这一点?将所有不同类型的对象存储在一个向量中似乎是一个糟糕的主意。C++ - 二维Z对象的多个向量排序

+0

做一个指数(链接每个对象的z顺序给该对象的位置),然后排序指数 –

+0

IM不知道你的指数是什么意思。 –

+0

就像书后面的索引一样。 “鸭,24.牛,26.鹅,32.马,37”。等等然后您按照要绘制对象的顺序对索引进行排序并遍历,例如在上面的例子中,你会画出马然后鹅然后牛然后鸭。 –

回答

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

+0

我对C++有点新鲜。这其中大部分都在我的头上。 –

+0

@EvanWard:好的,第一句对你有意义吗?如果是这样,你应该能够找出我代码的最后两行中的_most_。你不一定非得理解'deref_comparitor'是如何工作的。 –