【问题标题】:C++ arrange two vectors in the same way [duplicate]C ++以相同的方式排列两个向量[重复]
【发布时间】: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,但它无法使用。

【问题讨论】:

标签: c++ arrays sorting vector


【解决方案1】:

set<unordered_map<int,int> st;试试吧

你在哪里映射你的 bone_ids,权重值。并将映射添加到设置。它会自动排序

【讨论】:

    猜你喜欢
    • 2018-04-18
    • 1970-01-01
    • 2016-01-02
    • 1970-01-01
    • 1970-01-01
    • 2020-11-16
    • 2013-06-09
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多