我有两个向量矢量a和向量b,我想用a [i] / b [i]> a [i + 1] / b [b + 1]的条件对它们进行排序。我如何在C ++中实现代码?
答案 0 :(得分:3)
假设您从
开始android {
....
aaptOptions {
cruncherEnabled = false
}
....
}
创建索引向量#include <vector>
#include <algorithm>
int main() {
std::vector<int> a{2, 7, 3};
std::vector<int> b{4, 2, 1};
:
inds
还会创建一个比较函数来描述您问题中的条件:
std::vector<std::size_t> inds;
for(std::size_t i = 0; i < a.size(); ++i)
inds.push_back(i);
按照它排序:
auto cmp = [&](std::size_t lhs, std::size_t rhs) {
return static_cast<double>(a[lhs]) / b[lhs] > static_cast<double>(a[rhs]) / b[rhs];
};
此时, std::sort(std::begin(inds), std::end(inds), cmp);
}
将根据您的条件进行整理。
最后,使用reorder a vector using a vector of indices中的答案,根据inds
对a
和b
中的每一个进行重新排序。