从另一个 c++ 对数组进行排序
Ordering an array from another c++
我正在尝试对另一个数组进行排序,但我不知道该怎么做,我知道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 数组。
我该怎么做?
谢谢!
如果你有一个容器IDArray
,里面有所有int
索引,你可以这样做:
std::sort(IDArray.begin(), IDArray.end(), [&data](int index1, int index2) {
return data.zPosition[index1] < data.zPosition[index2];
});
相关文章:
- 在c++中尝试对对象数组进行排序时,出现std:bad_alloc错误
- 显示错误输出的简单数组排序程序
- 为什么我的排序算法会更改数组值
- 为什么我需要C++中不同的排序格式来对这个USACO代码上的数组和优先级队列进行排序
- 在 c++ 中对类中的 c 字符串动态数组进行排序的最佳方法是什么?
- 合并排序不排序自创建数组类 c++
- 带有枚举方向/类型的气泡排序结构数组
- 为什么指针在对二维数组进行排序时无法正常工作?
- 排序并行数组
- 如何在数组 c++ 中对字符串进行排序
- 为什么在此排序算法实现中,向量明显比数组慢?
- 如何对不在数组中的变量进行排序?
- C++数组与向量排序(在我的情况下,向量比数组慢~2.5倍(无优化))
- 按字母顺序对结构内数组变量中的名称进行排序
- 使用排序函数 c++ 对字符数组进行排序
- 使用 std::sort 对二维 c 数组进行排序
- 使用STL对用户输入数组进行排序的错误有什么解决方案吗?
- 使用 std::sort 对 C 样式的 2D 数组进行部分排序
- 数组为此合并排序函数提供了正确的输出,但向量给出了不正确的输出.出了什么问题?
- 对 0 、1 和 2 的数组进行排序