我正在尝试用另一个来排序数组,但我不知道该怎么做,我知道std::sort
存在,但我不知道如何将它与另一个数组一起使用。
吃茶:
我有一个带有多个向量的结构:
struct Data
{
std::vector<float> zPosition;
std::vector<float> alpha;
std::vector<int> life;
std::vector<Color> colors; // rgba (unsigned char)
…
}
我想对zPosition数组进行排序(远到最近)但是出于性能原因我不能交换每个数组。
所以我的想法是使用另一个数组std::vector<int> IDArray
。目标是使用zPosition
数据对此数组进行排序(后面的目标是将带有life = 0
的元素放在数组的末尾)
在渲染过程中,我可以做类似的事情:
for( int i = 0; i < Data.elementCount; i++ )
{
int ID = IDArray[i];
float zPosition = Data.zPosition[ID];
float alpha = Data.alpha[ID];
// ...
}
我想使用std :: sort,但是这个方法会排序zPosition
数组,而不是ID数组。
我该怎么做?
谢谢!
答案 0 :(得分:1)
如果您的容器IDArray
中包含所有int
索引,则可以执行以下操作:
std::sort(IDArray.begin(), IDArray.end(), [&data](int index1, int index2) {
return data.zPosition[index1] < data.zPosition[index2];
});