如何解决C ++以相同的方式排列两个向量
我正在用opengl做动画,我有2个向量。 1是Bone ID的整数向量,而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,3,1};
int weight_values = { 0.4162,0.0213,0.6213,0.71,0.09232,0.5,0 };
我可以使用std :: sort轻松完成此操作,然后使用std :: reverse进行权重值的转换,只抓取前三个值,但是由于骨骼,我无法找到一种方法也可以用bone_ids重新组织相同的方式id只需遵循与权重值相同的动作即可。
如果有帮助,我只需要获取前3个权重值及其前3个权重id。我的想法是按照从高到低的顺序对数组进行排序,然后获取前3个权重,但我意识到我也需要bone_ids,因此无法使用。
解决方法
使用set<unordered_map<int,int> st;
在其中映射您的bone_id,体重值的位置。并添加要设置的映射。它将自动对其进行排序
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。