gpt4 book ai didi

c++ - 从另一个 C++ 订购数组

转载 作者:太空宇宙 更新时间:2023-11-04 11:39:27 26 4
gpt4 key购买 nike

我正在尝试用另一个数组来排序,但我不知道该怎么做,我知道 std::sort存在,但我不知道如何将它与另一个数组一起使用。

说明:

我有一个包含多个 vector 的结构:

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 数组。

我该怎么做?

谢谢!

最佳答案

如果您有一个包含所有 int 索引的容器 IDArray,您可以执行以下操作:

std::sort(IDArray.begin(), IDArray.end(), [&data](int index1, int index2) {
return data.zPosition[index1] < data.zPosition[index2];
});

关于c++ - 从另一个 C++ 订购数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21920051/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com