【发布时间】:2020-08-17 08:00:37
【问题描述】:
我正在用 opengl 做动画,我有 2 个向量。 1 是骨骼 ID 的 int 向量,1 是权重值的浮点向量。例如,bone_ids[1] 对应于 weight_values[1] 或任何索引。我需要做的是从 weight_values 向量中获取前 3 个最大的浮点数,但我还需要以完全相同的方式重新排列 bone_ids 数组。因此,如果 weight_values[1] 因为它是最大的数字而被移动到 weight_values[0],那么我也需要将 bone_ids[1] 移动到 bone_ids[0] 。一个例子可能是:
int bone_ids = { 1, 2, 2, 3, 2, 0, 1};
int weight_values = { 0.4162, 0.0213, 0.6213, 0.71, 0.09232, 0.5, 0 };
我可以使用 std::sort 轻松做到这一点,然后使用权重值 std::reverse 并只获取前 3 个值,但是我找不到一种方法来重新组织与 bone_ids 相同的方式,因为骨骼id 只需要遵循与权重值相同的移动即可。
如果有帮助,我只需要获取前 3 个权重值及其前 3 个权重 ID。我的想法是从最高到最低对数组进行排序,然后获取前 3 个权重,但我意识到我也需要 bone_ids,但它无法使用。
【问题讨论】:
-
Protip:向量需要用
std:vector<>声明。这两行代码不像你想的那样工作。它们也不是数组。