【发布时间】:2021-09-21 07:51:26
【问题描述】:
我有一个包含类实例的向量,比如说std::vector<A> a。我想根据存储在std::vector<float> weights 中的权重对这个向量进行排序,weights[i] 是与a[i] 关联的权重;排序后,a 元素必须按权重递增排序。
我知道如何明确地做到这一点,但我想使用 C++14 STL 算法以便从最终的最佳实现中受益。到目前为止,我还没有弄清楚如何在std::sort 的 lambda 比较表达式中使用weights,也无法弄清楚每次交换a 的两个元素时如何保持a 和weights 对齐by std::sort,所以我开始认为这可能是不可能的。
提前感谢您的帮助。
【问题讨论】:
-
您还想遵守什么 C++ 标准? (C++14?然后使用那个标签。)你可以使用 Range-v3 和/或 Boost 之类的库吗?
-
只是一个想法,我正在忙着提款机。您可以尝试压缩这两个向量,按元组的权重成员对结果向量进行排序,将其他结果转换为仅考虑元组的 A 成员。使用范围会更简单。